IDC知識(shí)庫(kù)
IDC領(lǐng)域?qū)I(yè)知識(shí)百科平臺(tái)

使用OpenSSL查看證書(shū)有效期

一、查看證書(shū)有效期的基本命令

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

通過(guò)上述命令可以查看PEM格式證書(shū)的到期時(shí)間,輸出結(jié)果通常為以下格式:

notAfter=Jun  8 04:51:16 2022 GMT

其中notAfter表示證書(shū)到期的時(shí)間,可以通過(guò)這個(gè)時(shí)間來(lái)判斷證書(shū)是否過(guò)期。

二、自動(dòng)化檢查證書(shū)過(guò)期的腳本

通過(guò)編寫(xiě)一個(gè)自動(dòng)化的腳本來(lái)定期檢查證書(shū)是否過(guò)期,下面是一個(gè)簡(jiǎn)單的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

該腳本會(huì)讀取指定域名的CRT證書(shū)文件,檢查證書(shū)到期時(shí)間,并計(jì)算以當(dāng)前日期為基準(zhǔn)的天數(shù)差異,如果證書(shū)還有兩周以上的有效期,就會(huì)輸出剩余有效期天數(shù),否則提示證書(shū)即將或已經(jīng)過(guò)期。

三、結(jié)合Nagios進(jìn)行證書(shū)監(jiān)控

可以使用Nagios監(jiān)控系統(tǒng)來(lái)監(jiān)控證書(shū)的有效期,下面是Nagios監(jiān)控腳本的示例:

#!/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

該腳本通過(guò)調(diào)用OpenSSL命令獲取證書(shū)有效期并計(jì)算剩余有效期天數(shù),如果證書(shū)剩余有效期少于警告閾值,就會(huì)輸出警告信息,如果證書(shū)剩余有效期極低,就會(huì)輸出嚴(yán)重警告信息。

四、總結(jié)

在使用OpenSSL查看證書(shū)過(guò)期時(shí)間時(shí),有多種方法可以選擇。通過(guò)編寫(xiě)自動(dòng)化腳本和結(jié)合監(jiān)控系統(tǒng),可以定期檢查證書(shū)有效期,避免證書(shū)過(guò)期造成的安全問(wèn)題。

贊(11)
分享到: 更多 (0)

中國(guó)專(zhuān)業(yè)的網(wǎng)站域名及網(wǎng)站空間提供商

買(mǎi)域名買(mǎi)空間