gpt4 book ai didi

python-3.x - 不加密的 SSLContext

转载 作者:太空宇宙 更新时间:2023-11-03 14:29:38 24 4
gpt4 key购买 nike

是否有可能构建一个 SSLContext对底层套接字加密,只是直接传递数据,所以远程服务器不需要以任何方式感知 SSL/TLS?

这可能看起来有点毫无意义,但我正在研究如何在加密和非加密连接之间保持尽可能相似的代码路径,例如如果可以有类似的东西

encrypted_opts = ...
non_encrypted_opts = ...
context = SSLContext(**(encrypted_opts if encrypt else non_encrypted_opts))
ssl_socket = context.wrap_socket(socket, ...)

最佳答案

您可以创建一个虚拟 SSLContext,它返回一个表现得像 SSLSocket 的套接字

from socket import socket

class NonSSLContext():
def wrap_socket(self, sock, *_, **__):
sock.__class__ = NonSSLSocket
return sock

class NonSSLSocket(socket):
__slots__ = ()

def do_handshake(self):
pass

def unwrap(self):
self.__class__ = socket
return self

你可以用作(例如)

from ssl import SSLContext

encrypted_context = SSLContext(...
non_encrypted_context = NonSSLContext(...
context = encrypted_context if encrypt else non_encrypted_context
socket = ...
ssl_socket = context.wrap_socket(sock, ...
...
ssl_sock.do_handshake()
...

关于python-3.x - 不加密的 SSLContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53817486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com