<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      快速架設Python HTTPS服務

      0. 前言

      內網有一些接口是https的,由于開發調試需要,需要自建https環境供測試使用。

      1. 使用 OpenSSL 生成密鑰和證書文件

      mkdir -p /tmp/ca && cd /tmp/ca
      openssl req -newkey rsa:2048 -nodes -keyout example.key -x509 -days 365 -out example.crt
      

      這是一個使用 OpenSSL 工具生成自簽名證書的命令。它會要求你輸入一些相關信息,例如Country Name、State of Province Name、Locality Name等。你可以根據自己的實際情況進行填寫。

      執行完上述命令后,當前目錄下就會生成 example.key 和 example.crt 文件。example.key 是私鑰文件,而 example.crt 是自簽名證書文件。

      以下是各個選項的解釋:

      • req 是 OpenSSL 工具的一個子命令,用于處理證書簽名請求。
      • -newkey rsa:2048 選項表示要創建一個新的 RSA 密鑰,并將其長度設置為 2048 位。這個密鑰將用于后續的證書請求和簽名操作。
      • -nodes 選項表示不要對私鑰進行加密,即使私鑰被泄露也不會對其進行保護。這在測試和開發過程中很有用,但在生產環境中不建議使用。
      • -keyout example.key 選項指定了生成的私鑰文件的路徑和名稱。
      • -x509 選項表示生成一個自簽名的 X.509 格式證書,而不是一個證書請求。
      • -days 365 選項表示證書的有效期為一年,可以根據需要進行更改。
      • -out example.crt 選項指定了生成的證書文件的路徑和名稱。

      以上信息由ChatGPT生成的。

      2. 啟動Python 3的HTTPS服務器

      青春版

      import json
      import ssl
      from http.server import HTTPServer, BaseHTTPRequestHandler
      
      
      class MyRequestHandler(BaseHTTPRequestHandler):
          def do_GET(self):
              self.send_response(200)
              self.send_header('Content-type', 'application/json')
              self.end_headers()
              message = {"data": "hello"}
              self.wfile.write(bytes(json.dumps(message), 'utf-8'))
      
      
      if __name__ == '__main__':
          # 創建 SSL/TLS 上下文
          context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
      
          # 加載證書和密鑰
          context.load_cert_chain(certfile='/tmp/ca/example.crt', keyfile="/tmp/ca/example.key")
      
          # 創建 HTTP 服務器,并使用 wrap_socket() 方法包裝 socket
          httpd = HTTPServer(('localhost', 4443), MyRequestHandler)
          httpd.socket = context.wrap_socket(httpd.socket, server_side=True)
      
          # 啟動服務器
          httpd.serve_forever()
      

      雙模版

      import json
      import ssl
      import threading
      from http.server import HTTPServer, BaseHTTPRequestHandler
      
      
      class MyRequestHandler(BaseHTTPRequestHandler):
          message = {"data": "hello"}
      
          def send_json_response(self, content):
              self.send_response(200)
              self.send_header('Content-type', 'application/json')
              self.end_headers()
              self.wfile.write(content.encode(encoding='utf-8'))
      
          def do_GET(self):
              print("Headers: ", self.headers)
              self.send_json_response(json.dumps(self.message))
      
      
      def start_http_server(http_host, http_port):
          print(f'Serving on port {http_port} (HTTP) ...')
          HTTPServer((http_host, http_port), MyRequestHandler).serve_forever()
      
      
      def start_https_server(http_host, http_port):
          # 創建 SSL/TLS 上下文
          context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
      
          # 加載證書和密鑰
          context.load_cert_chain(certfile='/tmp/ca/example.crt', keyfile="/tmp/ca/example.key")
      
          # 創建 HTTP 服務器,并使用 wrap_socket() 方法包裝 socket
          httpd = HTTPServer((http_host, http_port), MyRequestHandler)
          httpd.socket = context.wrap_socket(httpd.socket, server_side=True)
      
          # 啟動服務器
          print(f'Serving on port {http_port} (HTTPS) ...')
          httpd.serve_forever()
      
      
      if __name__ == '__main__':
          # 啟動HTTP服務
          http_thread = threading.Thread(target=start_http_server, args=('localhost', 8000))
          http_thread.start()
      
          # 啟動HTTPS服務
          https_thread = threading.Thread(target=start_https_server, args=('localhost', 8443))
          https_thread.start()
      
      

      IPv6雙模版

      import json
      import socket
      import ssl
      import threading
      from http.server import HTTPServer, BaseHTTPRequestHandler
      
      
      class HTTPServerV6(HTTPServer):
          address_family = socket.AF_INET6
      
      
      class MyRequestHandler(BaseHTTPRequestHandler):
          message = {"data": "hello"}
      
          def send_json_response(self, content):
              self.send_response(200)
              self.send_header('Content-type', 'application/json')
              self.end_headers()
              self.wfile.write(content.encode(encoding='utf-8'))
      
          def do_GET(self):
              print("Headers: ", self.headers)
              self.send_json_response(json.dumps(self.message))
      
      
      def start_http_server(http_host, http_port):
          print(f'Serving on port {http_port} (HTTP) ...')
          HTTPServerV6((http_host, http_port), MyRequestHandler).serve_forever()
      
      
      def start_https_server(http_host, http_port):
          # 創建 SSL/TLS 上下文
          context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
      
          # 加載證書和密鑰
          context.load_cert_chain(certfile='/tmp/ca/example.crt', keyfile="/tmp/ca/example.key")
      
          # 創建 HTTP 服務器,并使用 wrap_socket() 方法包裝 socket
          httpd = HTTPServerV6((http_host, http_port), MyRequestHandler)
          httpd.socket = context.wrap_socket(httpd.socket, server_side=True)
      
          # 啟動服務器
          print(f'Serving on port {http_port} (HTTPS) ...')
          httpd.serve_forever()
      
      
      if __name__ == '__main__':
          # 啟動HTTP服務
          http_thread = threading.Thread(target=start_http_server, args=('::', 8000))
          http_thread.start()
      
          # 啟動HTTPS服務
          https_thread = threading.Thread(target=start_https_server, args=('::', 8443))
          https_thread.start()
      

      3. 擴展鏈接

      posted @ 2023-06-16 09:19  又是火星人  閱讀(3083)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲一区二区三区久久受| 天堂中文最新版在线官网在线| 库车县| 国产精品午夜福利免费看| 黄色三级亚洲男人的天堂| 久久超碰色中文字幕超清| 新巴尔虎左旗| 亚洲欧洲一区二区精品| 日韩放荡少妇无码视频| 香港日本三级亚洲三级| 女同精品女同系列在线观看| 无遮高潮国产免费观看| 人妻伦理在线一二三区| 亚洲天堂激情av在线| 国产乱理伦片在线观看| 岛国av无码免费无禁网站| 国产精品亚洲二区亚瑟| 盖州市| 欧美成年黄网站色视频| 俺来也俺去啦最新在线| 中文字幕日韩一区二区不卡| 少妇精品视频一码二码三| 综合色一色综合久久网| 亚洲熟妇色xxxxx欧美老妇| 2021国产成人精品久久| 国产精品久久人妻无码网站一区| 国产成人综合网亚洲第一| 97无码人妻福利免费公开在线视频| 欧美丰满熟妇bbbbbb| 97人妻免费碰视频碰免| 高清破外女出血AV毛片| 免费国产好深啊好涨好硬视频| 欧美日韩v| 一个色综合国产色综合| 亚洲欧洲∨国产一区二区三区| 一级女性全黄久久生活片| 免费国产一级 片内射老| 亚洲国产欧美在线看片一国产| 中文字幕乱妇无码AV在线| 亚洲V天堂V手机在线| 国产精品国产三级国av|