前言
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()[<