使用 Nagios 检查 SSL 证书有效性(包括 CA 链)

使用 Nagios 检查 SSL 证书有效性(包括 CA 链)

Nagios 可以进行 SSL 检查,但它实际上并不检查证书对于您正在使用的连接地址是否有效(通用名称匹配)。

在我们的一台服务器上,Plesk 更新未经通知就替换了 postfix 配置文件,导致证书回归为骗人的证书。Nagios 检查了 SSL,但没有发现它。为此,我想检查的不仅仅是到期日期,还要检查 CA 链。

我已经尝试了几个 nagios 的 SSL 插件,但是都无法做到这一点。

有人有建议吗?

答案1

我对此没有任何经验,但看起来检查 SSL 证书插件可以满足您的要求。

摘自作者网站:

check_ssl_cert 是 Nagios 插件,用于检查 CA 和 X.509 证书的有效性

答案2

我也找不到可以测试它的插件,但将一些随机 GPLed 插件的核心内容包装在 openssl 单行代码中非常容易。下面是一行代码,比较了我的两个服务器的输出;www 上有 Equifax 证书,nagios 是自签名的:

[madhatter@anni ~]$ echo "" | openssl s_client -connect nagios.teaparty.net:443 |& grep "verify error"
verify error:num=18:self signed certificate
[madhatter@anni ~]$ echo $?
0
[madhatter@anni ~]$

[madhatter@anni ~]$ echo "" | openssl s_client -connect www.teaparty.net:443 |& grep "verify error"
[madhatter@anni ~]$ echo $?
1
[madhatter@anni ~]$

请注意 grep 的退出状态的良好且易于测试的变化,取决于它是否找到“验证错误”字符串。

怎么样?

答案3

我尝试创建一个 Nagios 检查来基于此方法验证链顺序,但此方法似乎不适用于未经更改的 Debian。您应该使用:

echo "" | openssl s_client -showcerts -connect example.com:443 -CApath /etc/ssl/certs/ |& grep "verify error"

此外,当链条处于错误的顺序,但仍完整存在。

您可能会说顺序并不重要,只要中间体的顺序正确即可,但有些系统要求根 CA 存在,而有些系统则不需要。

相关内容