6

我对 pyOpenSSL 有点陌生。我试图弄清楚如何将生成的套接字与 ssl 证书相关联。verify_cb 被调用,这使我可以访问证书和 conn,但是当发生这种情况时我如何关联这些东西:

cli,addr = self.server.accept()

4

1 回答 1

5

握手完成后,即可获得客户端证书。虽然客户端证书在验证回调 (verify_cb) 中也可用,但除了在该回调中验证证书之外,没有任何理由尝试做任何事情。握手完全成功后,最好设置应用程序特定的映射。因此,请考虑使用 accept 方法返回的 OpenSSL.SSL.Connection 实例来获取证书(并从那里获取 commonName)并将其与此时的连接对象相关联。例如,

client, clientAddress = self.server.accept()
client.do_handshake()
commonNamesToConnections[client.get_peer_certificate().commonName] = client

您可能需要检查映射以确保您没有覆盖任何现有连接(可能使用连接列表而不是仅将每个通用名称映射到一个)。当然,当连接丢失时,您需要删除条目。

`do_handshake' 调用强制握手实际发生。如果没有这个,握手将在应用程序数据首次通过连接传输时发生。这很好,但它会使设置这个映射稍微复杂一些。

于 2008-09-18T20:49:43.353 回答