OpenSSL返回Chrome所示的不同SSL证书

Modified on: Fri, 26 Apr 2019 14:20:03 +0800

使用OpenSSL使用以下命令查询Sparkfun的CDN URL时:

openssl s_client -showcerts -connect dlnmh9ip6v2uc.cloudfront.net:443

证书中返回的公用名是*.sparkfun.com,无法验证,但如果您在Chrome中加载主机,则显示的公用名是*.cloudfront.net

这里发生了什么?

这导致了一个问题,因为我所处的环境通过Squid SSL_Bump代理SSL,后者生成由我本地信任的CA为域签名的证书。这适用于除上述之外的所有域,因为CN不匹配,因为新证书是使用OpenSSL生成的。

编辑 - 我已经验证了OpenSSL在远程数据中心的服务器上发生的情况,该服务器直接连接到互联网,没有代理或过滤。

编辑 - 问题是由于SNI已被接受,但要填写有关它为何导致Squid和SSL_Bump出现问题的信息:

  

此项目不支持转发SSL服务器名称指示
  (SNI)信息到原始服务器并将提供此类支持
  更难一点。然而,SNI转发有其严重的问题
  挑战(超出本文档的范围)远远超过了
  增加了转发困难。

摘自:http://wiki.squid-cache.org/Features/BumpSslServerFirst一>

作者:,Geoffrey

最佳答案

CloudFront使用SNI,这种方法可以在单个IP上使用多个证书。所有现代浏览器都支持这一点,openssl的s_client命令也是如此,但是s_client并没有神奇地做到这一点。你必须告诉它使用它:

openssl s_client -servername dlnmh9ip6v2uc.cloudfront.net  -connect dlnmh9ip6v2uc.cloudfront.net:443 -showcerts

相关问答

添加新评论