我对pyOpenSSL有点新鲜.我试图弄清楚如何将生成的套接字关联到ssl证书.verify_cb被调用,这使我可以访问证书和conn但是如何在发生这种情况时将这些事情联系起来:
cli,addr = self.server.accept()
握手完成后,您可以获得客户端证书.虽然验证回调(verify_cb)中也提供了客户端证书,但除了验证该回调中的证书之外,没有任何理由尝试做任何事情.在握手完全成功后,最好设置特定于应用程序的映射.因此,请考虑使用accept方法返回的OpenSSL.SSL.Connection实例来获取证书(并从那里获取commonName)并将其与此时的连接对象相关联.例如,
client, clientAddress = self.server.accept() client.do_handshake() commonNamesToConnections[client.get_peer_certificate().commonName] = client
您可能需要检查映射以确保不覆盖任何现有连接(可能使用连接列表而不是仅将每个公用名称映射到一个).当然,您需要在连接丢失时删除条目.
`do_handshake'调用强制实际发生握手.如果没有这个,当首次通过连接传输应用程序数据时,将发生握手.这很好,但它会使这个映射设置稍微复杂一些.