python - 如何将 pyOpenSSL verify_cb 的 ssl 证书中的 cn 关联到生成的套接字

标签 python pyopenssl

我对 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”调用强制握手实际发生。如果没有这个,握手将在应用程序数据首次通过连接传输时发生。这很好,但它会使设置此映射稍微复杂一些。

关于python - 如何将 pyOpenSSL verify_cb 的 ssl 证书中的 cn 关联到生成的套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/96508/

相关文章:

python - 如何表达一个变量只能取有限个值?

python - 如何从 pandas 数据帧的两个不同列添加值

openssl - easy_install PyOpenSSL错误

python - 简单 ECHO 客户端/服务器 [Python/sockets/ssl 模块] 中的相互 ssl 身份验证,ssl.SSLEOFError : EOF occurred in violation of protocol

python - 如何在 pyOpenSSL 中获取 DTLS 的当前密码

python测试框架

python - Python 格式字符串中的 %s 是什么意思?

python - crlDistributionPoints 目录名

javascript - 如何将 python 代码连接到 html?

python-2.7 - 来自 Chrome 的 Http 请求挂起 python 网络服务器