当前位置:首页 > 编程笔记 > 正文
已解决

如何使用python获取ssl证书信息

来自网友在路上 180880提问 提问时间:2023-10-19 12:05:32阅读次数: 80

最佳答案 问答题库808位专家为你答疑解惑

安装依赖

pip install OpenSSL

完整代码

"""
@Project :ssl证书验证 
@File    :get_ssl.py
@IDE     :PyCharm 
@Author  :zhizhuo
@Date    :2023/10/19 10:13 
"""
import socket
import OpenSSL
import hashlibdef get_ssl_cert_info(host):context = OpenSSL.SSL.Context(OpenSSL.SSL.SSLv23_METHOD)conn = OpenSSL.SSL.Connection(context, socket.socket(socket.AF_INET, socket.SOCK_STREAM))conn.connect((host, 443))conn.do_handshake()cert = conn.get_peer_certificate()issuer_components = cert.get_issuer().get_components()issuer_info = {component[0].decode("UTF-8"): component[1].decode("UTF-8") for component in issuer_components}cert_info = {'版本': str(cert.get_version()+1),'序列号': str(cert.get_serial_number()),'组织信息': str(cert.get_subject().organizationName),'颁发机构': issuer_info,'颁发者': str(cert.get_issuer().commonName),'有效期从': str(cert.get_notBefore().decode()),'过期时间': str(cert.get_notAfter().decode()),'是否过期': str(cert.has_expired()),'主题': str(cert.get_subject().CN),'证书中使用的签名算法': cert.get_signature_algorithm().decode("UTF-8"),'公钥长度':cert.get_pubkey().bits(),'公钥': OpenSSL.crypto.dump_publickey(OpenSSL.crypto.FILETYPE_PEM, cert.get_pubkey()).decode("utf-8"),'公钥SHA256指纹': hashlib.sha256(OpenSSL.crypto.dump_publickey(OpenSSL.crypto.FILETYPE_PEM, cert.get_pubkey())).hexdigest(),'证书SHA256指纹': hashlib.sha256(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)).hexdigest(),}return cert_infoif __name__ == "__main__":host = 'www.baidu.com'# host = 'devpress.csdn.net'# host = 'www.butian.net'cert_info = get_ssl_cert_info(host)for key, value in cert_info.items():if isinstance(value, dict):print(f"{key}:")for sub_key, sub_value in value.items():print(f"    {sub_key}: {sub_value}")else:print(f"{key}: {value}")

结果

版本: 3
序列号: 26585094245224241434632730821
组织信息: Beijing Baidu Netcom Science Technology Co., Ltd
颁发机构:C: BEO: GlobalSign nv-saCN: GlobalSign RSA OV SSL CA 2018
颁发者: GlobalSign RSA OV SSL CA 2018
有效期从: 20230706015106Z
过期时间: 20240806015105Z
是否过期: False
主题: baidu.com
证书中使用的签名算法: sha256WithRSAEncryption
公钥长度: 2048
公钥: -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuwS7hHZYB7RaiFTgala8
5dSNPh65KODXAY84K0GyWX3wrCe0JiQUOP5M6jtJUffpW0D3P6bI2g8CbiWLR5G4
Lp4AIRkdGAD83gT9Jnk5XfKQvICdqHyykYmJ2EAv5dKn815tSCvFHwqx4I6Mdv+8
0WcK0knWCe4mAwLzzM3qitUxqC2PA/1e/OQ6xolnmUzOmG36hA0OU4vmY1LFm0qp
q6MiNZkN7hn/my31pHfy7BCA9KuCudF+Nh8On5sZoPXDV92Iu87hkJw/S7rdOqlB
s92GTcLCt+j/NxPABIlDRDgR5qOW9wkiIS8sTg5+5dhcuwBEW6/e5LOw8Dy2OEVJ
XQIDAQAB
-----END PUBLIC KEY-----公钥SHA256指纹: 4bdcfbfcf1b5948eb71e99df9157fc8f8e8579727557f1d276738feada90c8ae
证书SHA256指纹: 0eda4c1d2cfe3518cafa61a26ee3a27a7c1c7fcc04941a51991c5cc7611dfc0b
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"如何使用python获取ssl证书信息":http://eshow365.cn/6-19694-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!