2024-04-20 10:18:26 发布
网友
我找不到合适的方法来获取SSLSocket接收的证书所使用的签名算法的名称。我知道您可以使用SSLSocket.getpeercert(True)来提取对等证书的字节,但是我不知道如何处理它。PyOpenSSL似乎没有一个简单的接口来从它的字节内容加载X509。在
SSLSocket.getpeercert(True)
我想知道这个信息,因为SHA1的证书在2017年1月1日之后不允许有过期时间,而且Python的SSLSocket.do_handshake()实现没有检查这一点。在
SSLSocket.do_handshake()
在这条非常有帮助的注释之后,您可以使用cryptography模块来加载SSLSocket.getpeercert()函数输出的derx509格式。从这个Certificate实例,您还可以访问有关证书的许多其他字段,例如过期时间。我现在的做法是:
cryptography
SSLSocket.getpeercert()
Certificate
import cryptography.x509 import cryptography.hazmat.backends.openssl import ssl sock = ssl.SSLSocket() # Wrap a socket, connect, handshake, etc etc... cert = cryptography.x509.load_der_x509_certificate( sock.getpeercert(True), cryptography.hazmat.backends.openssl.backend ) print(cert.signature_hash_algorithm.name) # This prints "sha1".
在这条非常有帮助的注释之后,您可以使用
cryptography
模块来加载SSLSocket.getpeercert()
函数输出的derx509格式。从这个Certificate
实例,您还可以访问有关证书的许多其他字段,例如过期时间。我现在的做法是:相关问题 更多 >
编程相关推荐