gpt4 book ai didi

python - 使用 python 创建 SSL 套接字

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

我正在使用 Python 2.4.4 和 OpenSSL 0.9.8k(不是我自己选择的)

我引用了文档:https://docs.python.org/release/2.4.4/lib/module-socket.html

互联网上几乎每次提到“openSSL”和“python”时,我都没有找到解决问题的方法。

我只是在编写一个测试程序来启动 SSL 连接。这是代码:

服务器

#!/usr/bin/python
import socket
import _ssl

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 4433))
s.listen(5)

while True:
client, address = s.accept()
ssl_client = socket.ssl(client,
keyfile='keyfile',
certfile='certfile')
print "Connection: ", address
data = ssl_client.read(1024)
if data:
print "received data: ", data
ssl_client.write(data + " Hello, World!")
del ssl_client
client.close()

客户端

#!/usr/bin/python
import socket
import _ssl

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('host', 4433))
ssl_s = socket.ssl(s,
keyfile='keyfile',
certfile='certfile')
print 'writing ', ssl_s.write("Hello, World!"), ' bytes to ssl stream'
data = ssl_s.read(1024)
del ssl_s
s.close()

print "received data: ", data

关于此代码的一些注意事项 - keyfilecertfile 是我的实际 key 和证书文件的路径。这些论点不是问题。主机名也不是问题。我知道使用的端口是 4433 - 在我们的要求中,我们打算使用通用端口,而不是 443。我不知道可以在不同的端口上使用 SSL,但无论如何,即使我使用443 我得到完全相同的错误。

我可以很好地运行服务器,然后当我运行客户端时,在客户端和服务器的 wrap_socket 行上出现以下错误:

错误:140770FC:SSL 例程:SSL23_GET_SERVER_HELLO:未知协议(protocol)

我读到这是因为使用了非 443 端口,但同样,使用 443 也没有解决问题。我读过这可能是协议(protocol)不匹配,但客户端和服务器都默认为 SSL2.3。我们打算根据我们的要求使用 TLS1.2,但文档似乎没有关于如何设置 SSL 协议(protocol)版本的任何信息。我不确定这是否与我的问题有关。请记住,我不是来这里就使用过时的 SSL 和 Python 版本展开对话的。

最佳答案

socket.ssl 只能发起 SSL 连接,并且给定的可选证书和 key 用于客户端证书。 socket.ssl 无法在服务器端使用,看起来 python 2.4.4 根本没有在任何核心模块中提供此功能。在更高版本的 python 中,您可以为此使用 ssl 模块,但 2.4.4 似乎没有这个。

关于python - 使用 python 创建 SSL 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39960983/

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