【发布时间】:2016-08-31 23:45:41
【问题描述】:
当我访问我的一个子域时:在浏览器中说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
它看起来已过期,但浏览器并未将其显示为已过期。这是在浏览器中:
【问题讨论】:
-
尝试添加
-tls1 -servername foo.example.com。我猜您有一个前端服务器,它为没有 SNI 的请求提供默认域,并且默认域被路由到具有旧证书的内部服务器。当浏览器连接时,它们使用 SNI 并获取您为其更新证书的服务器。或者,在所服务的链中可能存在一个证书过期的中间体。如果您提供真实信息,我们更容易帮助您解决此类问题。 -
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?。
-
@jww 你是对的。当我按照您的建议添加 tls1 信息时,它显示了适当的日期。谢谢您的帮助。虽然我认为您是对的,超级用户可能更合适,但 SO 中充斥着 openssl 问题,我遇到了与部署我的软件直接相关的问题。开发工具和软件当然是本网站的相关问题。
-
结束时不要生气。除了向我们隐藏真实的服务器名称(这种情况经常发生)之外,这不是一个坏问题。你对交叉污染是正确的,这也是我试图用评论标记 2012 年后问题的原因。如果人们不知道在哪里询问有关使用这些工具进行开发操作的问题,那我们可耻。
标签: ssl https openssl certificate