python 通过两种方式获取SSL证书信息

本文介绍了Python中通过域名和导入证书内容两种方式获取SSL证书信息的方法,详细讲解了相关原理和依赖,并提供了实际的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python 通过两种方式获取SSL证书信息

前言

SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。
SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能。

原理

X.509是ITU-T标准化部门基于他们之前的ASN.1定义的一套证书标准。X.509 证书己应用在包括TLS/SSL(WWW万维网安全浏览的基石)在内的众多 Internet协议里.
一般会包含以下的信息:
1.版本号
2.拥有者公钥
3.证书的序列号,同一个发布者范围内唯一的
4.拥有者标识,这个标识是全世界唯一的
5.证书的有效期
6.发布者的数字签名
7.签名算法的描述
X509证书文件,根据封装的不同,主要有以下三种类型:
*.cer:单个X509证书文件,不私钥,可以是二进制和Base64格式。该类型的证书最常见;
*.p7b:PKCS#7格式的证书链文件,包含一个或多个X509证书,不含私钥。通常从CA中心申请RSA证书时,返回的签名证书就是p7b格式的证书文件;
*.pfx:PKCS#12格式的证书文件,可以包含一个或者多个X509证书,含有私钥,一般有密码保护。通常从CA中心申请RSA证书时,加密证书和RSA加密私钥就是一个pfx格式的文件返回。

依赖

pip install pyOpenSSL==19.1.0
pip install python-dateutil==2.8.1

代码

第一种通过传入域名获取证书信息:

def domain_analysis(domain):
    """
    # 查询域名证书到期
    :param domain:
    :return:
    """
    try:
        domain_str = "curl -Ivs https://%s --connect-timeout 10" % domain.encode("UTF-8")
        return_code, output = commands.getstatusoutput(domain_str)

        m = re.search('SSL connection using (.*?)\n.*?start date: (.*?)\n.*?expire date: (.*?)\n.*?issuer: (.*?)\n.*?',
                      output, re.S)
        if m:
            start_date = m.groups()[1]
            expire_date = m.groups()[<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值