gpt4 book ai didi

python - 使用 python 验证 SSL 中的对等体

转载 作者:太空狗 更新时间:2023-10-29 20:17:41 29 4
gpt4 key购买 nike

我试图找出如何通过服务器在 python 中验证自签名证书。我在谷歌中找不到太多数据。我还想确保服务器 url

提前感谢您的任何见解。

最佳答案

从评论到我的第一个回复,我发现人们普遍误解了“验证证书”的含义。我会尽量在这里写一个简短的解释来消除一些幻想。

证书验证是关于根据某些加密签名检查证书元数据(即主题、有效期、扩展名等)上的签名。

如果您用于验证的只是一个自签名证书,您无法将它与另一个具有完全相同元数据但 key 不同的自签名证书区分开来,除非您事先知道 key 证书的 key 。并且不要忘记,您建立所有这些验证程序是为了消除拥有这种预共享知识的要求。通过定期证书验证,您无法完全消除对某些预共享知识的要求,这些知识是一组第三方证书,也称为“CA 证书”。由于此知识是预先共享的,这些证书可能是自签名的,但请记住,您不是从验证过程中而是从一些外部知识中收到有关这些证书有效性的信息。

当您有一组在对等方之间分发的可信“CA 证书”时,您可以使用这些证书签署其他证书并根据可信 CA 的预共享知识检查签名。

但是如果您除了证书本身之外没有关于自签名证书的其他知识,您就不能假设对该特定证书的信任,因为它可以由一些邪恶的黑客以及您值得信赖的服务器颁发。

请了解一些关于Man in the middle attack的知识, Public key infrastructurePublic key cryptography通常在实现任何类型的证书验证过程之前。

请理解,即使不考虑一般的互联网安全,盲目验证自签名证书也无法保护您免受您自己网络中的聪明黑客攻击。

编辑:问题作者澄清说他实际上是在寻找如何使用 M2Crypto 绑定(bind)验证证书上的 verisign(或其他 CA)签名。这里有两个例子:

from M2Crypto import X509, SSL

# manual validation of a signature on a certificate using a given CA cert:
ca = X509.load_cert('/path/to/ca_cert.pem')
cert = X509.load_cert('certificate_to_validate.pem')
print "Verification results:", cert.verify(ca.get_pubkey())

# adding a given CA cert to the SSL Context for verification
ctx = SSL.Context()
# load a certificate from file
ctx.load_verify_locations(cafile='/path/to/ca_cert.pem')
# or use all certificate in a CA directory
ctx.load_verify_locations(capath='/path/to/ca/dir')
# or you can specify both options at the same time.

如果您要使用包含许多 CA 证书的目录(这通常更方便),您必须将每个证书重命名为 <hash>.0其中 <hash>是证书主题的哈希值(通过 openssl x509 -noout -hash -in cert.pem 获得)。

关于python - 使用 python 验证 SSL 中的对等体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1519074/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com