如何将pyOpenSSL verify_cb的SSL证书中的cn关联到生成的套接字
时间:2020-03-06 14:23:20 来源:igfitidea点击:
我是pyOpenSSL的新手。我试图弄清楚如何将生成的套接字与ssl证书相关联。调用verify_cb,它使我可以访问证书和conn,但是在发生这种情况时如何关联这些东西:
cli,addr = self.server.accept()
解决方案
握手完成后,我们可以获取客户端证书。尽管客户端证书也可以在verify回调(verify_cb)中使用,但除了在该回调中验证证书之外,没有任何其他理由尝试做任何事情。在握手完全成功之后,设置特定于应用程序的映射会更好。因此,请考虑使用accept方法返回的OpenSSL.SSL.Connection实例来获取证书(并从那里获取commonName),然后将该证书与连接对象关联。例如,
client, clientAddress = self.server.accept() client.do_handshake() commonNamesToConnections[client.get_peer_certificate().commonName] = client
我们可能需要检查映射,以确保不覆盖任何现有连接(也许使用连接列表,而不仅仅是将每个公用名映射到一个)。当然,当连接断开时,我们需要删除条目。
`do_handshake调用强制握手实际发生。否则,握手将在首次通过连接传输应用程序数据时发生。很好,但是会使此映射的设置稍微复杂一些。