我正在建立一个Nagios / Icinga监控系统来监控我的环境。我想通过check_ssl_cert来监控我的SSL证书,因为它不能在所有站点上运行。
我的命令:
/usr/lib/nagios/plugins/check_ssl_cert -c 7 -w 28 -H 141.85.37.43 -r /etc/ssl/certs/
返回:SSL_CERT CRITICAL: Error: verify depth is 6
(141.85.37.43只是一个示例地址,不是我自己的,但也犯了同样的错误。)
如果我尝试
# openssl s_client -connect ftp.myDomain.de:443
CONNECTED(00000003)
140037719324328:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error:s23_clnt.c:741:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 320 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
---
或
# curl https://ftp.myDomain.de:443 -v
* About to connect() to ftp.myDomain.de port 443 (#0)
* Trying 212.xxx.xxx.xxx...
* connected
* Connected to ftp.myDomain.de (212.xxx.xxx.xxx) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS alert, Server hello (2):
* error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error
* Closing connection #0
curl: (35) error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error
我在名为ftp.myDomain.de
的ubuntu系统上使用crushFTP。我可以毫无问题地将它与https://ftp.myDomain.de
一起使用。
证书安装为.pem文件,并通过Thawte验证。
我的证书有问题吗?
答案 0 :(得分:3)
我得到的东西。这与我的SSL-Certs有关。我需要查看ssl version 3
以获得有效的结果。
Icinga plugins # openssl s_client -connect ftp.myDomain.de:443 -ssl3
我修改了check_ssl_cert
并添加了一个新的param -ssl来定义版本,就像提供的check-http一样:
http://pastebin.com/f46YQFg3(需要在那里发布,以便为stackoverflow.com提供支持)
并可以使用
进行检查Icinga plugins # /usr/lib/nagios/plugins/check_ssl_cert -c 7 -w 28 -H "ftp.myDomain.de" -r "/etc/ssl/certs/" --ssl 3
SSL_CERT OK - X.509 certificate for 'ftp.myDomain.de' from 'Thawte DV SSL CA' valid until Jun 5 23:59:59 2015 GMT (expires in 676 days)|days=676;28;7;;
所以我的问题有点解决,但我需要弄清楚我的旧有什么不同 - 没有需要的解决方法 - 证书,如果我需要改变那里的东西?
答案 1 :(得分:2)
我与check_ssl_cert
后面的开发人员联系,他在更新版本中优化并实施了我的解决方案。
https://trac.id.ethz.ch/projects/nagios_plugins/wiki/check_ssl_cert
答案 2 :(得分:0)
我不能肯定地说,因为我没有所有必要的细节,但看起来您的证书很好,只是它的验证链太长,以便check_ssl_cert验证它。
错误消息显示“验证深度为6”。这意味着证书验证链长度大于6个项目,而不是必须失败。
在check_ssl_cert的第228和205行附近,您会看到代码:
exec_with_timeout $TIMEOUT "echo 'Q' | $OPENSSL s_client ${CLIENT} ${CLIENTPASS} -connect $HOST:$PORT ${SERVERNAME} -verify 6 ${ROOT_CA} 2> ${ERROR} 1> ${CERT}"
注意那里的-verify 6
限制了要测试的最大链长。如果你将其更改为-verify 16
(这可能是过度杀伤但应该处理你的链),那么它很可能会有效。
答案 3 :(得分:0)
我在新的Nagios框中遇到了同样的问题,并尝试了最新版本的check_ssl_cert
但没有成功。
最后解决方案是安装expect
。