在openssl s_client中使用'-servername'参数

时间:2017-05-04 14:29:18

标签: apache ssl openssl centos6

我正在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

1 个答案:

答案 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

相关问题