我正在Centos6 / Apache上安装新的SSL证书,我的网络浏览器不断拿起旧证书。为了测试我的设置,我使用“openssl s_client”,但我看到基于“-servername”参数的不同结果。似乎没有人给我们这个参数,它没有出现在手册页中,但我看到它在这里提到OpenSSL: Check SSL Certificate Expiration Date and More 。
如果我运行此命令:
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates
我得到证书的正确日期。
(notBefore = 4月20日00:00:00 2017 GMT notAfter = 4月20日23:59:59 2018 GMT)
但是,如果我将-servername参数引入到命令
中 echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates
然后我获得浏览器显示的过期日期 -
(notBefore = 4月20日00:00:00 2016 GMT notAfter = 4月20日23:59:59 GMT)
任何人都可以解释为什么会这样,因为这必须与我的SSL证书在浏览器中显示已过期的原因有关。
由于 O
答案 0 :(得分:3)
此页面上(简要)记录了s_client的servername参数:
https://www.openssl.org/docs/man1.0.2/apps/s_client.html
基本上它有点像'" Host" HTTP中的标头,即它使所请求的域名作为SSL / TLS握手的一部分传递(在SNI - 服务器名称指示扩展中)。然后,服务器可以在单个IP后面托管多个域。它将根据请求的域名回复相应的证书。
如果您没有请求特定域名,则服务器不知道为您提供哪种证书,因此您最终会得到一个默认域名。在您的情况下,服务器为您的域提供的证书之一已过期,但默认证书尚未过期。
您需要确保更新域名的正确VirtualHost条目,例如见:
https://www.digicert.com/ssl-support/apache-multiple-ssl-certificates-using-sni.htm