我目前正在使用 nagios 进行监控,包括使用check_http
选项检查即将过期的 SSL 证书等。我想要做的是测试我监控的每个站点的证书是否被撤销。听起来很简单,对吧?嗯:
check_http
似乎不检查证书是否被吊销。至少,最近发生这种情况时它没有发出哔哔声,这导致了一些混乱- Openssl
verify
有-crl_check
和-crl_check_all
,这很好,但我更关心 OSCP 而不是 CRL(因为那是浏览器会关心的) - Openssl 有一个
oscp
模式,但看起来我必须做大量工作才能将证书放到正确的位置,找出 OSCP 服务器的位置等等。
我找到了很多关于编写代码进行 OSCP 检查的文章,但一定有一个不错的程序可以做到这一点,对吧?我想要的是 Nagios 检查,或者我可以用作检查的东西。在我理想的世界中,它看起来像这样:
check_http_with_oscp -I (IP) -H (hostname) -p 443
任何人?
答案1
恐怕我在这里只能给出指点,但你应该能够毫不费力地把一些东西拼凑起来。
openssl 的 s_client -showcerts 将转储 PEM 编码的证书。你可以很容易地使用正则表达式提取每个证书。然后通过 openssl x509 -text 管道传输它们以提取 OCSP url。然后 openssl ocsp 可用于向响应者发送 OCSP 请求:
http://openssl.org/docs/apps/ocsp.html
在每种情况下,您都需要父证书,除了根证书之外,您还需要父证书。因此,除了可能对其进行硬编码外,它是相当独立的。(您也可以通过 AIA 扩展 URL 下载根证书。)