这可能取决于公证服务器上也可能发生的 dns 解析 + 缓存。如果您解析 www.facebook.com,您通常会获得一个 IP 地址。但是这个 IP 会随着时间的推移而变化,并可能将您带到不同的地方。
我只是快速检查了一下,确实给我的 www.facebook.com IP 地址改变了,而且证书信息也不同了。
在几分钟的时间里,我收到了 www.facebook.com 的 3 个不同的 IP 地址:69.171.229.16
, 69.171.234.80
,69.171.228.40
为每个 IP 获取 SSL 证书会产生不同的证书。但是,即使对于相同的 IP 地址,证书也不一致。在那几分钟里,我至少收到了两个证书:
-----BEGIN CERTIFICATE-----
MIIDzDCCAzWgAwIBAgIQPAjP7r6f68QrsT7gPWIL3zANBgkqhkiG9w0BAQUFADCB
ujEfMB0GA1UEChMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVy
aVNpZ24sIEluYy4xMzAxBgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2Vy
dmVyIENBIC0gQ2xhc3MgMzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMg
SW5jb3JwLmJ5IFJlZi4gTElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjAeFw0x
MTExMTcwMDAwMDBaFw0xMjA3MTMyMzU5NTlaMGoxCzAJBgNVBAYTAlVTMRMwEQYD
VQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlQYWxvIEFsdG8xFzAVBgNVBAoTDkZh
Y2Vib29rLCBJbmMuMRkwFwYDVQQDExB3d3cuZmFjZWJvb2suY29tMIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQC4e9C0eD3zy0YR829bH7fd3PGGDp/3Rd7UR65Q
+jcsRoLZaer9k9tPEOd5ZmWR1MTzwVEmZ94fhoWf219K2Nx/v7fQaWYh5U0DETUo
bkDfR4zBAe+oMuFDIGrhEkUEdlWUOcpvScrtzRjRLyikTc4twjRlpB5RdnGGFopw
CRTNMwIDAQABo4IBIDCCARwwCQYDVR0TBAIwADBEBgNVHSAEPTA7MDkGC2CGSAGG
+EUBBxcDMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LnZlcmlzaWduLmNvbS9y
cGEwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL1NWUkludGwtY3JsLnZlcmlzaWdu
LmNvbS9TVlJJbnRsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
CwYDVR0PBAQDAgWgMCkGA1UdEQQiMCCCEHd3dy5mYWNlYm9vay5jb22CDGZhY2Vi
b29rLmNvbTA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3Nw
LnZlcmlzaWduLmNvbTANBgkqhkiG9w0BAQUFAAOBgQANiGfuAUQqkUZiD2cozCmb
7+e6vK5yzc/3o/zAd+QBydo7dkPo/t8nIHUfGxcAKUICjAzH/j3FDykK3bupFvBW
D4GoU6qVvNFgH8ucYWMNbxsknN/s3lcFryIGZYFcsYuPEB/rbBEEseKTilUSR7vt
pUEsLwSGdWwTNtKgy/COcQ==
-----END CERTIFICATE-----
和
-----BEGIN CERTIFICATE-----
MIIDnzCCAwigAwIBAgIQCSGX4cDpzQPaNSQ2VhCGgTANBgkqhkiG9w0BAQUFADCB
ujEfMB0GA1UEChMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazEXMBUGA1UECxMOVmVy
aVNpZ24sIEluYy4xMzAxBgNVBAsTKlZlcmlTaWduIEludGVybmF0aW9uYWwgU2Vy
dmVyIENBIC0gQ2xhc3MgMzFJMEcGA1UECxNAd3d3LnZlcmlzaWduLmNvbS9DUFMg
SW5jb3JwLmJ5IFJlZi4gTElBQklMSVRZIExURC4oYyk5NyBWZXJpU2lnbjAeFw0x
MTA3MTQwMDAwMDBaFw0xMjA3MTMyMzU5NTlaMGoxCzAJBgNVBAYTAlVTMRMwEQYD
VQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlQYWxvIEFsdG8xFzAVBgNVBAoTDkZh
Y2Vib29rLCBJbmMuMRkwFwYDVQQDExB3d3cuZmFjZWJvb2suY29tMIGfMA0GCSqG
SIb3DQEBAQUAA4GNADCBiQKBgQC4e9C0eD3zy0YR829bH7fd3PGGDp/3Rd7UR65Q
+jcsRoLZaer9k9tPEOd5ZmWR1MTzwVEmZ94fhoWf219K2Nx/v7fQaWYh5U0DETUo
bkDfR4zBAe+oMuFDIGrhEkUEdlWUOcpvScrtzRjRLyikTc4twjRlpB5RdnGGFopw
CRTNMwIDAQABo4H0MIHxMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0
cDovL29jc3AudmVyaXNpZ24uY29tMAkGA1UdEwQCMAAwRAYDVR0gBD0wOzA5Bgtg
hkgBhvhFAQcXAzAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy52ZXJpc2lnbi5j
b20vcnBhMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9TVlJJbnRsLWNybC52ZXJp
c2lnbi5jb20vU1ZSSW50bC5jcmwwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUF
BwMCMAsGA1UdDwQEAwIFoDANBgkqhkiG9w0BAQUFAAOBgQAwUGokl1919Kf6YPDK
uoF+k7CFm+j2YtZqw4ilP9166qkM8IDWyYa87MB084WXSyfS1VnT5FSwzjP37+Qx
gjRaROuWGxfY25KebCQpoBW2PJp3S1JmqHHyxjk4mzr+tzWK0Qn+tlBUy9igtkIh
VybjO+AxBZve1qyJIsVraz8wrw==
-----END CERTIFICATE-----
当您访问任何一个 Facebook IP 地址时,Facebook 可能有一些优先级列表,其中列出了 DNS 问题的 IP 地址以及您命中的 SSL 端点(通过他们的负载均衡器)。他们的基础设施设置可能“更喜欢”某些端点而不是其他端点(也许他们在一个端点上的硬件比另一个端点上的硬件更强大),这就是为什么您通常会看到一个指纹,但偶尔会看到另一个。
更新:
要更具体地回答您的其他问题:
这会提高安全性吗?
我认为确实如此,但主要是如果您在说“安全性”时考虑可用性而不是机密性或完整性。如果一个证书过期/需要撤销/出于任何其他原因需要更换,您仍然有另一个完全可操作、有效且准备就绪。
跟踪哪个服务器有哪个证书看起来很乏味,这种方法真的值得吗?它甚至不可扩展,因为单个区域集群中的证书不同
这可能有点乏味,但我敢肯定,这只是 Facebook 在宏伟计划中必须处理的乏味任务的一小部分。这值得么?我想是的,我会说 facebook 这样做是有原因的(正如我上面提到的,主要是可用性原因)。我想它不是在服务器上运行,而是某种强大的专用 SSL 加速器/端点集群。这些将处理 SSL 流量,然后反向代理通信到一些前端 Web 服务器(无需担心证书)。
如果发生泄漏,只保留备用证书怎么样?从安全的角度来看,保留它们而不是全部部署它们似乎更好:如果一个泄露,为什么不泄露其他?
是的,让一些备用证书离线是一个非常好的主意,而且我不知道我会打赌 Facebook 也会这样做。拥有多个在线证书与拥有一些离线证书并不相互排斥。您假设他们部署了所有这些,但情况可能并非如此。还要建立逻辑联系,即如果一个人泄露了,其他人也会泄露,这需要更多的事实。如果他们有良好的安全措施来隔离事物,那么一个妥协不会立即链接到另一个妥协。例如,他们可以在不同的服务器操作系统上使用来自不同供应商的不同 HSM,由一组单独的防火墙保护并由完全独立的团队管理。