ITPub博客

首页 > 数据库 > 数据库开发技术 > Python脚本实现批量查询SSL证书的到期时间

Python脚本实现批量查询SSL证书的到期时间

原创 数据库开发技术 作者:运维book思议 时间:2023-05-19 21:29:59 0 删除 编辑

先放个链接,万一有人关注呢

优质文章推荐

↓ ↓ ↓ ↓ ↓

Linux系统初始化脚本

能够监控100台服务器的磁盘利用率的脚本——16行代码实现

Linux系统初始化脚本之二

Linux系统巡检脚本——快速获取当前系统信息

Linux远程执行脚本——Python运维脚本

哪个Linux发行版会成为CentOS的平替?


在当今数字化时代,网站和应用程序的安全性至关重要。域名证书是保护在线通信和数据传输安全的关键组成部分。然而,证书的有效期是有限的,过期的证书可能会导致安全漏洞和信任问题。因此,定期查询域名证书到期时间是一项必要的任务,如果没有及时意识到证书即将到期,可能会引起一系列问题。

1、安全漏洞的防范

过期的域名证书可能会导致安全漏洞,使得网站容易受到中间人攻击或数据泄露。定期查询证书到期时间可以确保及时更新证书,以保持安全性和完整性。通过检查证书的到期时间,可以避免使用过期证书进行通信,降低被攻击的风险,并提升网站和应用程序的安全性。

2、用户信任和体验

有效的域名证书是用户信任的基础。过期证书可能导致浏览器警告或错误提示,使用户对网站的信任降低。通过定期查询证书到期时间并及时更新证书,可以确保用户获得无错误的浏览体验,增强用户信任感,提高用户满意度。

3、合规要求的遵守

许多行业和法规对于保护用户数据和保障隐私有明确的要求,包括PCI DSS、HIPAA、GDPR等。这些规定通常要求组织定期检查和更新证书,以确保数据传输的安全性。通过定期查询证书到期时间,组织可以确保符合合规性要求,避免因证书过期而面临违规处罚或法律责任。

这里用一个脚本实现批量查询域名证书的到期时间。
import subprocessfrom datetime import datetime
def check_ssl_certificate(hostname): try: command = f"openssl s_client -servername {hostname} -connect {hostname}:443 -showcerts" output = subprocess.run(command, shell=True, capture_output=True, text=True).stdout.strip()
cert_info = "" for line in output.split("\n"): if "-----BEGIN CERTIFICATE-----" in line: cert_info += line + "\n" elif "-----END CERTIFICATE-----" in line: cert_info += line + "\n"
command = f"openssl x509 -noout -issuer -subject -dates -serial" output = subprocess.run(command, input=cert_info.encode(), shell=True, capture_output=True, text=True).stdout.strip()
issuer = output.split("issuer=")[1].split("\n")[0] subject = output.split("subject=")[1].split("\n")[0] expiration_date = output.split("notAfter=")[1].split("\n")[0] expiration_date = datetime.strptime(expiration_date, "%b %d %H:%M:%S %Y %Z") current_date = datetime.now() days_left = (expiration_date - current_date).days serial_number = output.split("serial=")[1].split("\n")[0]
certificate_info = { "主机名": hostname, "颁发机构": issuer, "证书主题": subject, "到期日期": expiration_date.strftime("%Y-%m-%d %H:%M:%S"), "剩余天数": days_left, "证书序列号": serial_number }
return certificate_info except subprocess.CalledProcessError: return "错误:无法获取SSL证书信息"
def main(): hosts = [ "example.com", "google.com", "facebook.com" ]
for host in hosts: certificate_info = check_ssl_certificate(host) if isinstance(certificate_info, dict): print(f"主机名:{host}") for key, value in certificate_info.items(): print(f"{key}:{value}") print() else: print(certificate_info)
if __name__ == "__main__":    main()

结束!如有不足之处,欢迎指正!

我们的组织在这里:

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。




原文作者:运维book思议;如有侵权,请联系管理员删除。

上一篇: 文件校验脚本
请登录后发表评论 登录
全部评论

注册时间:2022-09-24

  • 博文量
    333
  • 访问量
    215227