问题
如何使用PyOpenSSL或Twisted验证X.509证书是否由另一个证书签名?我希望客户端验证接收到的服务器证书是否是对其客户端证书进行签名的证书。
我查看了PyOpenSSL文档,似乎找不到任何关于如何与建立SSL连接分开验证证书的内容。
我在OpenSSL.crypto:X509.verify()中找到了对twisted.internet._sslverify:PublicKey.verifyCertificate()的引用,但是twisted 13.0中的扭曲方法被注释掉了,X509方法不存在(在PyOpenSSL 0.13中)。
pyOpenSSL不支持验证证书。描述了一个无法手动验证证书链的错误,但我不完全确定这是否是我所要做的。
用例
证书:
设置:
这一切都很好(双方相互验证),但我想执行一个额外的步骤:
发布于 2017-10-12 15:12:40
您应该能够在这里编写这样的内容:http://www.yothenberg.com/validate-x509-certificate-in-python/,它基本上是:
load_certificate()加载证书X509Store()对象add_cert()在存储区中添加中间证书X509StoreContext()对象,使用存储对象和结束证书初始化它verify_certificate()在实践中,我无法做到这一点,我认为这是因为这里解释的原因:https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html
简而言之,即使在2016年,仍然没有正确的等待来检查PyOpenSSL中的证书,这是非常可悲的。请注意,协商一致意见似乎是,如果您在TLS连接内操作,则最好由连接例程来检查,而不是通过check_certificate()脱机检查。
https://stackoverflow.com/questions/18701737
复制相似问题