在 Redhat 中,有一个名为 的脚本,certwatch
当 Apache 证书即将过期时会发出警告。Ubuntu 有类似的脚本吗?谢谢。
答案1
它似乎certwatch
也已从 RHEL 中分离出来,并且也可作为独立脚本使用。
此外,还有一个名为ssl-cert-check
也可以检查证书是否过期。
用法:
$ ssl-cert-check -s {SERVER_NAME} -p {PORT}
脚本是描述在这里。
最后,您还可以openssl
直接使用来获取到期日期和时间:
$ echo | openssl s_client -servername {SERVER_NAME} -connect {SERVER_NAME}:{PORT} | openssl x509 -noout -dates
答案2
(尽管 Artur 的回答可能有助于我们避免重复劳动)
openssl
有“检查日期”标志……可在 cron 作业(或脚本)中轻松使用
在本地证书上:(我有一个名为 pull192.168.13.5.pem 的证书)
openssl x509 -in pulled192.168.13.5.pem -noout -enddate
- 输出到期日期
notAfter=2025 年 7 月 23 日 17:56:34 GMT
这-检查结束标志接受你的日期(想想天数)以秒为单位输入。
openssl x509 -in pulled192.168.13.5.pem -noout -checkend 9999
- 输出是否在您输入的时间范围内到期(以秒为单位)
证书不会过期
openssl x509 -in pulled192.168.13.5.pem -noout -enddate -checkend 9999
- 结合两个标志
notAfter=Jul 23 17:56:34 2025 GMT
证书不会过期
openssl x509 -in pulled192.168.13.5.pem -noout -enddate -checkend 99999999999
notAfter=Jul 23 17:56:34 2025 GMT
证书将过期
或者远程拉取:
openssl s_client -connect 192.168.13.3:443 </dev/null 2>/dev/null | openssl x509 -noout -enddate -checkend 9999
notAfter=Mar 20 18:54:38 2023 GMT
证书不会过期
openssl s_client -connect 192.168.13.3:443 </dev/null 2>/dev/null | openssl x509 -noout -enddate -checkend 99999999999
notAfter=Mar 20 18:54:38 2023 GMT
证书将过期
回答这个问题:(“编写脚本”......)
在命令行上这有效:(我有另一个本地证书将在不到 10 天内过期)
openssl x509 -in signed.domain.pem -checkend 864000 -noout || notify-send "Cert will expire soon"
- 如果证书在 10 天内(864000 秒)到期,将使用通知发送显示自定义通知
另外,在通知中显示我们正在测试的天数。
当我们想要增加/减少证书到期前的测试天数时,我们可以更改 secs 值,而不是直接更改 -checkend 值。
secs=864000; let days=$secs/60/60/24; openssl x509 -in signed.domain.pem -checkend $secs -noout || notify-send "Cert will expire soon (less than $days days)"
答案3
我开始厌倦打字openssl命令,所以我现在使用(并维护)名为https-*上市这里。