Python 实现 SSL 证书的套接字

Python Socket Implementing SSL Certificate

我正在制作 server/client 套接字。
现在我想对服务器实施 SSL 证书,以便连接被加密。
在有人给我 link 文档之前,我想说我已经看过了,但我仍然不知道如何实现它。

server.py : https://gist.github.com/comand100vip/19376a249b31ae66f46796749e2b9771
client.py : https://gist.github.com/comand100vip/a36f220fe4c0fe0bb1090b9668a79833
我放 link,因为客户端和服务器加起来是 250 行,我不希望这里有文字墙。

导入 SSL 并设置上下文。您可以按照自己的意愿实施。例如,您可以将其移至 init 方法。然后将套接字包装在 SSL 上下文中。

import socket, ssl


class Connector:
    HEADER = 1024
    VERSION = "0.1"
    servers_count = 0
    server_alive = True
    shutdown_event = threading.Event()
    servers = []
    FORMAT = "utf-8"
    context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
    context.load_cert_chain('/path/to/certchain.pem', '/path/to/private.key')
    context.verify_mode = ssl.CERT_REQUIRED
    context.check_hostname = True
    context.load_default_certs()

    def __init__(self, port, server_name):
        print("\n[SERVER] Initializing server...")
        self.s = None
        self.HOST = ""  # socket.gethostbyname(socket.gethostname())
        self.PORT = port
        self.server_name = server_name
        self.conn = None
        self.address = None
        self.server_infos = {f"{Connector.servers_count}": f"{self.server_name}", "PORT": f"{self.PORT}", "HOST":
                         f"{self.HOST}"}
        Connector.servers.append(self.server_infos)
        print(f'[SERVER] Created server: "{self.server_name}", index of server: {self.servers_count}')
        Connector.servers_count += 1

 def create_socket(self):
    print(f"[{self.server_name} - INFO] Creating socket...")
    try:
        self.s = socket.socket()
        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        ssl_sock = context.wrap_socket(self.s,server_hostname=self.HOST)
        ssl_sock.connect((self.address, self.PORT))
        print(f"[{self.server_name} - DONE] Creating socket done!")
    except socket.error as error_msg:
        print(f"[{self.server_name} - ERROR] creating socket:\n{error_msg}")