【问题标题】:Browser, s_client without SNI and expired certificate没有 SNI 和过期证书的浏览器、s_client
【发布时间】: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 UserUnix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?
  • @jww 你是对的。当我按照您的建议添加 tls1 信息时,它显示了适当的日期。谢谢您的帮助。虽然我认为您是对的,超级用户可能更合适,但 SO 中充斥着 openssl 问题,我遇到了与部署我的软件直接相关的问题。开发工具和软件当然是本网站的相关问题。
  • 结束时不要生气。除了向我们隐藏真实的服务器名称(这种情况经常发生)之外,这不是一个坏问题。你对交叉污染是正确的,这也是我试图用评论标记 2012 年后问题的原因。如果人们不知道在哪里询问有关使用这些工具进行开发操作的问题,那我们可耻。

标签: ssl https openssl certificate


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多