浏览器,没有SNI的s_client和过期的证书

时间:2016-05-06 02:30:06

标签: ssl https openssl certificate

当我访问其中一个子域名时:在浏览器中说出https://foo.example.com并检查证书,证书看起来很棒。当我从远程计算机使用openssl时,它显示过期的证书。怎么会这样?

我尝试重现在question中找到的内容,但我的情况有所不同。我跑的时候

echo | openssl s_client -showcerts -connect foo.example.com:443 2>&1 | grep Verify

我明白了:

Verify return code: 10 (certificate has expired)

当我跑步时:

echo | openssl s_client -showcerts -connect foo.example.com:443 2>&1 | openssl x509 -noout -dates

我明白了:

notBefore=Sep 27 15:10:20 2014 GMT
notAfter=Sep 27 15:10:20 2015 GMT

它看起来已过期,但浏览器未将其显示为已过期。这是在浏览器中:

enter image description here

1 个答案:

答案 0 :(得分:1)

请参阅@jww的第1条评论。他指出我需要在我的openssl命令中添加-tls1 -servername foo.example.com。他的评论:

  

尝试添加-tls1 -servername foo.example.com。我猜你有一台前端服务器为没有SNI的请求提供默认域,默认域路由到旧证书的内部服务器。当浏览器连接时,它们使用SNI并获取已更新证书的服务器。或者,可能存在一个在服务链中有过期证书的中间件。如果您提供真实信息,我们更容易帮助您解决此类问题。