如果我比较证书的 SHA-1https://0000.jp在 Chrome 中:
79 72 28 12 74 83 85 DE 3C B0 DE E7 A4 C3 14 BE B4 93 79 6E
OpenSSL 提供了:
$ echo -n | openssl s_client -connect 0000.jp:443 2>/dev/null | openssl x509 -noout -fingerprint
SHA1 Fingerprint=79:72:28:12:74:83:85:DE:3C:B0:DE:E7:A4:C3:14:BE:B4:93:79:6E
然后我得到相同的值。
如果我做同样的事情https://google.co.uk然后 Chrome 会显示:
06 4B 11 0D 63 4A 83 E2 6B 1A 12 19 EC 04 46 F3 7C 3A 01 D7
而 OpenSSL 显示:
$ echo -n | openssl s_client -connect google.co.uk:443 2>/dev/null | openssl x509 -noout -fingerprint
SHA1 Fingerprint=3F:6D:D9:AB:60:92:1E:EE:D3:4C:C7:36:04:49:B2:FA:F9:E5:2D:92
Chrome 中没有警告,并且我认为 NSA/俄罗斯/朝鲜不太可能对我的错误负责...那么造成这种差异的原因是什么?
答案1
它们是不同的证书。出于技术和管理方面的原因,Google 使用来自多个不同根源的大量不同 SSL 证书。
您的两个测试很可能访问了两个不同的 Google 服务器。他们拥有大量服务器,采用各种负载平衡方法,因此请求并不总是发送到同一台服务器。
尝试通过连接到同一 IP 地址(而不是域)来查看证书的两种方法可能使它们都连接到同一个服务器并显示相同的哈希值。
只要两个证书都有效、不显示任何警告并且来自知名的证书颁发机构,一切就都正常。无需担心。