跳到主要内容
ecdsa.com

证书或公钥固定

在常规证书链验证之外,通过匹配 CA 密钥、中间证书或服务器自身密钥的哈希,把客户端对某个主机接受的证书或公钥限定在一个固定集合内。
其他写法certificate pinningpublic key pinningHPKPSSL pinningpin-sha256

固定值通常是 SubjectPublicKeyInfo 的哈希(即 OkHttp 和 Android 网络安全配置中的 sha256/…),因此用同一密钥续期的证书仍然能够匹配。固定 CA 或中间证书的密钥比固定叶子证书更稳妥;任何一组固定值都至少需要一个未在生产环境中使用的备用密钥。

Web 已经放弃了动态固定:HTTP 公钥固定(RFC 7469)曾造成由网站自身引发的服务中断和“恶意固定”,Chrome 在 72 版(2019年)中移除了它,Firefox 也在 72 版(2020年)中默认禁用了它。浏览器仍为自家厂商的域名保留一份很小的内置固定列表。证书透明度和 CAA 已经覆盖了 HPKP 所针对的大部分威胁。

在移动应用和物联网中,证书固定依然常见,但也带有同样的风险:更短的证书有效期、CA 密钥轮换(Let's Encrypt 在2024年和2026年更换了中间证书)以及取消信任事件,都会导致启用了证书固定却不能及时更新的客户端无法连接。SPKI 固定值生成器可以根据证书或密钥计算固定值。

标准与参考资料

全部术语