我想要来自 python 证书的“颁发给”信息。我尝试使用 SSL 和 SSLSocket 库但没有发生。
原文由 Raj 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想要来自 python 证书的“颁发给”信息。我尝试使用 SSL 和 SSLSocket 库但没有发生。
原文由 Raj 发布,翻译遵循 CC BY-SA 4.0 许可协议
pyOpenSSL
库似乎不太适合这项任务。这是他们在官方文档中所说的
注意:Python Cryptographic Authority 强烈建议尽可能使用 pyca/cryptography。
有一些使用 Python 标准库的变通方法,但其中大多数看起来很混乱。
这是通过 pyca/cryptography 完成的方法。它看起来非常简单干净
from cryptography.x509 import load_pem_x509_certificate
cert = load_pem_x509_certificate(certificate_content)
certificate_serial_number = cert.serial_number
certificate_issuer_info = cert.issuer.rfc4514_string()
certificate_subject_info = cert.subject.rfc4514_string()
结果将打印包含发行人详细信息的整行
CN=name,O=Org\, Inc.,L=Tucson,ST=Arizona,C=US
CN=Sectigo RSA Organization Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB
要访问有关证书的特定详细信息,您可以使用 cert.issuer
对象。
原文由 Henry Harutyunyan 发布,翻译遵循 CC BY-SA 4.0 许可协议
1 回答10.1k 阅读✓ 已解决
2 回答4k 阅读✓ 已解决
4 回答4k 阅读✓ 已解决
4 回答3.5k 阅读✓ 已解决
3 回答4.7k 阅读
3 回答1.7k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
更新的答案
如果可以建立到远程服务器的连接,则可以使用
ssl
标准库模块:原答案
使用 pyOpenSSL 。
You can also access additional components, eg organisation (
subject.O
/issuer.O
), organisational unit (subject.OU
/issuer.OU
).您的证书文件可能是另一种格式,因此您可以尝试
crypto.FILETYPE_ASN1
而不是crypto.FILETYPE_PEM
。