IDC知识库
IDC领域专业知识百科平台

使用OpenSSL查看证书有效期

一、查看证书有效期的基本命令

$ openssl x509 -enddate -noout -in certificate.pem

通过上述命令可以查看PEM格式证书的到期时间,输出结果通常为以下格式:

notAfter=Jun  8 04:51:16 2022 GMT

其中notAfter表示证书到期的时间,可以通过这个时间来判断证书是否过期。

二、自动化检查证书过期的脚本

通过编写一个自动化的脚本来定期检查证书是否过期,下面是一个简单的Python脚本:

#!/usr/bin/env python

import subprocess
import datetime

domain = "example.com"
today = datetime.datetime.today()

p1 = subprocess.Popen(["openssl", "x509", "-noout", "-enddate", "-in", "/etc/ssl/certs/%s.crt" % domain], stdout=subprocess.PIPE)
p2 = subprocess.Popen(["grep", "notAfter"], stdin=p1.stdout, stdout=subprocess.PIPE)
p1.stdout.close()
output = p2.communicate()[0].strip()[9:]

expire_date = datetime.datetime.strptime(output, '%b %d %H:%M:%S %Y %Z')
delta = expire_date - today

if delta.days > 14:
    print "Certificate for %s expires in %d days" % (domain, delta.days)
else:
    print "Certificate for %s has expired or will do so within the next two weeks!" % domain

该脚本会读取指定域名的CRT证书文件,检查证书到期时间,并计算以当前日期为基准的天数差异,如果证书还有两周以上的有效期,就会输出剩余有效期天数,否则提示证书即将或已经过期。

三、结合Nagios进行证书监控

可以使用Nagios监控系统来监控证书的有效期,下面是Nagios监控脚本的示例:

#!/bin/bash

DAYSTOWARN=10
CRITDAYSTOWARN=2

days=$(echo "( $(/usr/bin/openssl x509 -in "$1" -enddate -noout | cut -d= -f 2) - $(date +%s) ) / 86400" | bc)

# Check validity values
if [[ $days -lt 0 ]]; then
  echo "ERROR: certificate has already expired!"
  exit 2
elif [[ $days -lt $CRITDAYSTOWARN ]]; then
  echo "CRITICAL: certificate expires in ${days} days or less!"
  exit 2
elif [[ $days -lt $DAYSTOWARN ]]; then
  echo "WARNING: certificate expires in ${days} days!"
  exit 1
fi

echo "OK: certificate expires in ${days} days."
exit 0

该脚本通过调用OpenSSL命令获取证书有效期并计算剩余有效期天数,如果证书剩余有效期少于警告阈值,就会输出警告信息,如果证书剩余有效期极低,就会输出严重警告信息。

四、总结

在使用OpenSSL查看证书过期时间时,有多种方法可以选择。通过编写自动化脚本和结合监控系统,可以定期检查证书有效期,避免证书过期造成的安全问题。

赞(0)
分享到: 更多 (0)

中国专业的网站域名及网站空间提供商

买域名买空间