gpt4 book ai didi

Python SSL wrap_socket 失败,出现 SSLError,Errno 336265218

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

我有简单的客户端/服务器 SSL 代码,它在 Python 3.2 上运行良好。然而,我决定切换到 2.7(由于第三方模块丰富),现在代码失败了。代码如下:

客户:

def connect(self):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect(('localhost', 4430))
self.ssl_sock = ssl.wrap_socket(self.sock, cert_reqs = ssl.CERT_NONE, ssl_version = ssl.PROTOCOL_TLSv1)

服务器:

self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.sock.bind((self.hostname, 4430))
self.sock.listen(5)
while True:
self.newsocket, self.fromaddr = self.sock.accept()
self.ssl_sock = ssl.wrap_socket(
self.newsocket,
server_side = True,
certfile = "cert.pem",
ssl_version=ssl.PROTOCOL_TLSv1
)

self._handle_client(self.ssl_sock)

cert.pem(与服务器 .py 文件位于同一目录):

-----BEGIN RSA PRIVATE KEY-----
(812 "random" characters here)
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
(1260 "random" characters here)
-----END CERTIFICATE-----

故障如下:
1. 服务器等待 self.sock.accept()
2. 客户端连接self.sock.connect()
3. 服务器继续 wrap_socket,失败并出现以下错误:

Traceback (most recent call last):
File "C:\Program Files\Python27\lib\multiprocessing\process.py", line 258, in _bootstrap
self.run()
File "C:\workspace\projectc\server\server\clientlistener.py", line 49, in run
ssl_version=ssl.PROTOCOL_TLSv1
File "C:\Program Files\Python27\lib\ssl.py", line 381, in wrap_socket
ciphers=ciphers)
File "C:\Program Files\Python27\lib\ssl.py", line 141, in __init__
ciphers)
SSLError: [Errno 336265218] _ssl.c:351: error:140B0002:SSL routines:SSL_CTX_use_PrivateKey_file:system lib

附言
1) 我怀疑 wrap_socket 调用,因为即使我为 certfile 使用不存在的文件,也会产生相同的错误结果。
2) 我在 ssl 的 python 文档上尝试了替代包装(即使用 ssl.SSLContext),奇怪的是“模块”对象没有属性“SSLContext”,当它是 ssl 模块的一部分时。当我使用 Python 3.2 尝试时,这不是问题。

更新:
我发现问题只发生在我从 Eclipse 中“运行”时,而不是当我从单独的命令提示符运行这两个文件时。仍在调查这个问题...

更新 2:我用相同的代码尝试了一个非常简单的客户端/服务器脚本并且它有效。现在,由于服务器代码位于多处理子进程(由主服务器进程启动)中,它似乎无法正常工作。相关?

最佳答案

问题解决了。我相信 Eclipse 保留了一些剩余信息,尽管我从来没有弄清楚它保留了什么信息。它可能与从 python 3.2 到 2.7 的迁移有关,尽管我之前已经在运行配置中更改了它。重置 Eclipse 环境有效(仅仅重启计算机是不够的)。

关于Python SSL wrap_socket 失败,出现 SSLError,Errno 336265218,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12795012/

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