TimeoutError通过Python3中的SSL客户端证书连接到Zope ZEO数据库服务器

我正在尝试通过ZODB客户端-服务器连接器连接到ZEO数据库。

我可以使用未加密的TCP fine连接到Zeo服务器。

client_storage = ZEO.client(("server.com",8090))

然后我在Zeo服务器配置文件上打开ssl客户端身份验证:

...
  <ssl>
    certificate /etc/letsencrypt/live/server.com/fullchain.pem
    key /etc/letsencrypt/live/server.com/privkey.pem
    authenticate /etc/zeo/auth/client.pem
  </ssl>
...

使用openssl,我使用LetsEncrypt服务器证书创建了签名的客户端证书:

openssl genrsa -out client.key 4096
openssl req -config /root/ca/openssl.conf -key client.key -new -sha256 -out client-req.pem
openssl ca -config /root/ca/openssl.conf -extensions usr_cert -days 375 -notext -md sha256 -in client-req.pem -out client.pem

/root/ca/openssl.conf指向LetsEncrypt服务器证书作为中间CA。

作为测试,我 CAN 通常使用Python3 ssl连接到Zeo服务器:

root = "mycerts"
cafile = os.path.join(root,"fullchain.pem")
certfile = os.path.join(root,"client.pem")
keyfile = os.path.join(root,"client.key")

context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH,cafile=cafile)
context.load_default_certs()  #  Omitting this line breaks things
context.load_cert_chain(certfile=certfile,keyfile=keyfile)

host_addr = 'server.com'
host_port = 8090

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
conn = context.wrap_socket(s,server_side=False,server_hostname=host_addr)
conn.connect((host_addr,host_port))

但是,如果我使用Zeo:

root = "mycerts"
cafile = os.path.join(root,keyfile=keyfile)

host_addr = 'server.com'
host_port = 8090
client_storage = ZEO.client((host_addr,host_port),ssl=context)

问题是,我总是收到'TimoutError'

如果我还提供 ssl_server_hostname = host_addr

,似乎没有什么不同。

在Zeo代码中,它使用asyncio create_connection(),但可以照原样传递ssl上下文。

我还检查了fullchain.pem和client.pem,它们很好,它们的链条很完整。

我在做什么错了?

liuzhaobing 回答:TimeoutError通过Python3中的SSL客户端证书连接到Zope ZEO数据库服务器

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3170107.html

大家都在问