首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不加密的SSLContext

不加密的SSLContext
EN

Stack Overflow用户
提问于 2018-12-17 14:42:49
回答 1查看 61关注 0票数 0

是否有可能构造一个不对底层套接字进行加密并直接传递数据的SSLContext,因此远程服务器不需要以任何方式知道SSL/TLS?

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

代码语言:javascript
运行
复制
encrypted_opts = ...
non_encrypted_opts = ...
context = SSLContext(**(encrypted_opts if encrypt else non_encrypted_opts))
ssl_socket = context.wrap_socket(socket, ...)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-01 10:33:52

您可以创建一个虚拟SSLContext,它返回一个看起来像SSLSocket的套接字。

代码语言:javascript
运行
复制
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

您可以将其用作(例如)

代码语言:javascript
运行
复制
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()
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53817486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档