繁体   English   中英

不加密的SSLContext

[英]SSLContext that does no encryption

是否可以构造一个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,该虚拟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()
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM