推荐:SSL证书过期检查器——ssl-cert-check

推荐:SSL证书过期检查器——ssl-cert-check

在网络安全日益重要的今天,SSL证书的管理已经成为一项必不可少的任务。ssl-cert-check 是一个基于Bourne shell脚本的工具,专门用于检测即将到期的SSL证书。它不仅方便易用,还能与cron任务和Nagios集成,确保您的站点始终处于安全状态。

1、项目介绍

ssl-cert-check 提供了一种简单的方法来监控服务器上的SSL/TLS证书有效期,避免因证书过期导致的安全问题或服务中断。它支持多种运行模式,包括通过指定域名和端口、读取证书文件或目录,甚至可以作为Nagios插件运行。

2、项目技术分析

  • 命令行选项丰富ssl-cert-check 提供了诸如设置邮件提醒、指定邮件发送者、自定义过期天数等众多参数,可以根据实际需求进行定制。
  • 多场景应用:能够处理PEM和PKCS12格式的证书,并支持批量处理证书目录。
  • 集成Nagios:可以与系统监控软件Nagios配合,生成状态报告并直接输出到日志。
  • 协议版本选择:允许指定特定的TLS或SSL协议版本进行验证,以应对不同环境的需求。

3、项目及技术应用场景

  • 系统维护:定期运行ssl-cert-check 可以帮助管理员发现即将到期的SSL证书,确保网站和服务的持续安全。
  • 自动化监控:结合cron调度,可以在证书即将到期前自动发送警告通知。
  • 企业级部署:在大型网络环境中,可以与Nagios等监控系统集成,提供统一的证书过期监控。

4、项目特点

  • 简易操作:仅需一行命令即可开始检查,适用于各种技术水平的用户。
  • 灵活性强:支持通过域名、文件和目录等多种方式检查证书,满足不同场景需求。
  • 实时警报:可配置邮件提醒功能,防止因未及时发现证书过期而影响业务。
  • 兼容性广:适用于各种类型和格式的SSL证书。

使用示例:

# 打印ssldomains文件中所有证书的过期时间
$ ssl-cert-check -f ssldomains

# 检查/etc/haproxy/ssl目录下的所有PEM证书
$ ssl-cert-check -d "/etc/haproxy/ssl/*.pem"

# 如果有证书将在接下来的60天内过期,向admin@prefetch.net发送警告邮件
$ ssl-cert-check -a -f ssldomains -q -x 60 -e admin@prefetch.net

更多详细文档和实例,请访问:http://prefetch.net/articles/checkcertificate.html

通过ssl-cert-check,您可以轻松地将SSL证书管理纳入日常运维流程,为您的在线业务保驾护航。立即加入,让您的安全更为无忧!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 答:import ssldomains = []with open('domains.txt', 'r') as f: for line in f: domains.append(line.strip())for domain in domains: try: cert = ssl.get_server_certificate((domain, 443)) x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert) print(domain + ": " + str(x509.get_notAfter())) except Exception as e: print(domain + ": " + str(e)) ### 回答2: 下面是一个可以从文件中逐行读取域名,并批量检查域名的 SSL 证书过期时间的 Python 脚本: ```python import ssl import socket import datetime def check_ssl_expiry(domain): try: hostname = domain.strip() context = ssl.create_default_context() with socket.create_connection((hostname, 443)) as sock: with context.wrap_socket(sock, server_hostname=hostname) as ssock: cert = ssock.getpeercert() expire_date = cert['notAfter'] expire_datetime = datetime.datetime.strptime(expire_date, '%b %d %H:%M:%S %Y %Z') current_datetime = datetime.datetime.now() days_left = (expire_datetime - current_datetime).days print(f'{domain} SSL 证书剩余 {days_left} 天过期') except Exception as e: print(f'{domain} SSL 证书过期时间无法获取: {e}') file_path = "domains.txt" # 域名文件路径 with open(file_path, "r") as file: for line in file: check_ssl_expiry(line) ``` 这个脚本会打开一个文件,其中每行包含一个域名。然后,它会依次读取每个域名,并使用 SSL 验证来检查该域名的证书过期时间。如果成功获取到证书过期时间,将会打印出域名和剩余的过期天数。如果获取不到证书过期时间,将会打印出错误信息。 请将域名列表存储在名为 "domains.txt" 的文件中,并将其放在与脚本相同的目录下。然后运行脚本,它将逐行读取域名并输出结果。 ### 回答3: 你可以使用Python的`ssl`和`socket`模块来编写一个脚本,从文件中读取域名,并批量查找域名的SSL证书过期时间。 首先,你需要创建一个文本文件,其中包含一行一个域名。例如,假设你的文件名为`domains.txt`,其内容如下: ``` www.example1.com www.example2.com www.example3.com ``` 然后,你可以使用以下脚本来读取文件中的域名,并批量查找其SSL证书过期时间: ```python import ssl import socket # 打开文件并读取域名 with open('domains.txt', 'r') as file: domains = file.readlines() # 遍历域名列表 for domain in domains: # 去除行尾的换行符 domain = domain.strip() try: # 创建TLS连接 with socket.create_connection((domain, 443)) as sock: with ssl.create_default_context().wrap_socket(sock, server_hostname=domain) as ssock: # 获取证书信息 cert = ssock.getpeercert() # 取出过期时间字段 expire_date = cert['notAfter'] # 打印信息 print(f"域名: {domain}") print(f"SSL证书过期时间: {expire_date}") print() except ssl.CertificateError: print(f"域名: {domain}") print("无法验证证书") print() except ssl.SSLError as e: print(f"域名: {domain}") print(f"SSL错误: {str(e)}") print() ``` 该脚本逐行读取文件,并使用`socket.create_connection`方法与每个域名的443端口建立TLS连接。然后,使用`ssl.create_default_context`和`wrap_socket`方法包装套接字,并获取证书信息。 注意,如果域名具有自签名证书证书在本地不受信任,则可能会引发`ssl.CertificateError`异常。这段代码也可以捕获其他与SSL相关的错误异常。 通过执行以上脚本,你将看到每个域名以及其SSL证书过期时间输出在控制台上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武允倩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值