当我访问其中一个子域名时:在浏览器中说出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
它看起来已过期,但浏览器未将其显示为已过期。这是在浏览器中:
答案 0 :(得分:1)
请参阅@jww的第1条评论。他指出我需要在我的openssl命令中添加-tls1 -servername foo.example.com
。他的评论:
尝试添加-tls1 -servername foo.example.com。我猜你有一台前端服务器为没有SNI的请求提供默认域,默认域路由到旧证书的内部服务器。当浏览器连接时,它们使用SNI并获取已更新证书的服务器。或者,可能存在一个在服务链中有过期证书的中间件。如果您提供真实信息,我们更容易帮助您解决此类问题。