Python 获取网站证书有效期

news/2024/12/1 19:04:26/

Python获取网站证书有效期

  • Python获取网站证书有效期
    • python:OpenSSL和ssl
    • python+shell:subprocess和curl

Python获取网站证书有效期

由于某些原因,需要验证网站证书有效期,从而做出响应的措施来避免一些特殊情况的出现。

python:OpenSSL和ssl

首先考虑使用OpenSSL模块和ssl模块来完成需求,使用OpenSSL之前需要先安装模块-pyOpenSSL。

pip install pyopenssl
import OpenSSL
import ssldef check_cert_valid():# 这里还有一些代码,用来获取域名列表,情况不同,不阐述了for domain in domain_list:  # 这里是一些域名的列表,可以使用其他方式# 这里我直接使用了下述方法来获取证书,并没有将证书写入文件cert = ssl.get_server_certification((domain, 443))  # 一般是443端口,并且这里默认返回# 的是PEM证书# 如果有cert文件的话,直接执行这里# cert_file_path = ''  # cert证书文件路径# cert = open(cert_file_path).read()  # 当然这里也可以使用with来进行上下文管理    certification = OpenSSL.crypto.load_certification(OpenSSL.crypto.FILETYPE_PEN, cert)valid_start_time = certification.get_notBefore()  # 有效期起始时间valid_end_time = certification.get_notAfter()  # 有效期结束时间pass  #  接下来执行各自的操作即可if __name__ == '__main':check_cert_valid()

python+shell:subprocess和curl

在使用上述方法的时候,大部分域名都是正常的,但是部分域名的有效期不匹配,不清楚原因为何,如果有大佬知道原因,烦请不吝赐教,感谢,之后又尝试了这种方案。

首先需要安装subprocess模块

pip install subprocess
import subprocessdef check_cert_valid():# 这里还有一些代码,用来获取域名列表,情况不同,不阐述了for domain in domain_list:  # 这里是一些域名的列表,可以使用其他方式# curl命令,-k代表不使用认证到达ssl站点,-v显示详情,-s代表静默,-o代表输出curl_cmd = "curl https://%s -k -v -s -o /dev/null" % domain[0]return_code, output = subprocess.getstatusoutput(domain_str)output_groups = re.search('SSL connection using (.*?)\n.*?start date: (.*?)\n.*?expire date: (.*?)\n.*?issuer: (.*?)\n.*?',output, re.S)if output_groups:# 接下来的时间是字符串,可能不符合各位的预期,使用时间格式化来回处理一下即可start_date = output_groups.groups()[1]  # 有效期起始时间expire_date = output_groups.groups()[2]  # 有效期结束时间passpass  #  接下来执行各自的操作即可if __name__ == '__main':check_cert_valid()

但是在这里操作的时候,遇见了乱码的问题,也就是WWW-Authenticate: Basic realm="*******",这里出现了乱码,使用grep -v命令也失败,只能退出求其次,将内容先写入文件,之后再重新读文件,这里走了弯路了,大佬有解决方法的话也忘不吝赐教,感谢,下面跳出来后来的命令。

curl_cmd = "curl https://%s -k -v -s -o /dev/null 2>/tmp/cert.txt;" \"cat /tmp/cert.txt| grep -v 'WWW-Authenticate'" % domain[0]

http://www.ppmy.cn/news/237276.html

相关文章

python 指定证书验证_如何在python中验证SSL证书?

我需要验证我的自定义CA签署了证书.使用OpenSSL命令行实用程序很容易做到: # Custom CA file: ca-cert.pem # Cert signed by above CA: bob.cert $openssl verify -CAfile test-ca-cert.pem bob.cert bob.cert: OK 但是我需要在Python中做同样的事情,而且我真的不想…

python 支付宝证书 计算SN 序列号

网上没看到有python写的算支付宝公钥证书与根证书序列号得,只有java与php,我python怎么能没有呢 整上! 安装pyOpenSSL pip install pyOpenSSL # codingutf-8 # author wangdada import OpenSSL import hashlib import redef md5(string):re…

python 证书-python+证书

广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! redirect:根据路由跳转页面render_template:找到并返回html页面,默认文件夹是tem…

python 证书-python requests证书问题解决

用requests包请求https的网站时,我们偶尔会遇到证书问题。也就是常见的SSLerror,遇到这种问题莫慌莫慌。 这里没有找到合适的网站去报SSL证书的错误,所以就假装请求了一个https的网站,然后给报了SSLerror了,然后下面是…

pythonrequests证书_python requests证书问题解决

用requests包请求https的网站时,我们偶尔会遇到证书问题。也就是常见的SSLerror,遇到这种问题莫慌莫慌。 这里没有找到合适的网站去报SSL证书的错误,所以就假装请求了一个https的网站,然后给报了SSLerror了,然后下面是…

工信部python证书多少钱_python requests SSL证书问题

错误信息如下: requests.exceptions.SSLError: ("bad handshake: Error([(SSL routines, tls_process_server_certificate, certificate verify failed)],)",) python做爬虫,对于有的网站,需要验证证书,比如&#xff1a…

python证书过期_简单python脚本监控SSL证书到期提醒

随着https的普及,或者说被强制使用,需要维护的SSL证书越来越多,而且由于各种原因吧,需要在各种不同的平台申请维护证书,时间长了,总有证书忘记续签 有些使用了letsencrypt自动续签,但是某些原因…

python证书考试报名时间,python证书考试报名条件

python考级一年考几次 一年考四次。2019年全国计算机等级考试(NCRE)将举办四次考试,时间分别为3月30日至4月1日(第54次)、6月1日(第55次)、9月21日至23日(第56次)及12月…