Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
什么是证书固定?
证书固定是一种安全技术,用于限制客户端在建立安全会话时可接受的证书或证书颁发机构(CA)。 客户只信任特定 固定的 证书或发行者,拒绝任何其他证书。 安全社区最初引入证书固定机制,是为了帮助防范中间人(MITM)攻击,尤其是在知名证书颁发机构(CA)遭攻破事件之后。
证书固定与公共 Web PKI
本文重点介绍通过公共Web PKI发布的公开受信任TLS服务器证书。
一个由CA、浏览器根程序、行业标准机构和操作系统供应商组成的全球生态系统运营着公共的Web PKI。 证书链、发放CA、信任锚点和证书生命周期会随着安全事件、合规要求和生态系统变化而不断演进。
该指导不适用于私有PKI或其他受控信任环境,这些环境由组织拥有完整的证书生命周期、信任分发模型和事件响应流程。
为什么不再推荐对公开信任的证书进行静态固定
虽然证书钉顶曾经是最佳实践,但安全环境发生了变化。 如今,Microsoft、AWS、DigiCert、Cloudflare、Google 以及 OWASP 等安全组织都广泛不建议采用静态固定(在代码或配置中硬编码证书或 CA)。
主要问题并不在于证书锁定无效。 相反,在公共的Web PKI中,它往往带来的操作风险多于安全益处。
- 运营风险: 你必须定期更换证书和CA以保障安全和合规。 静态固定会使这些变更难以实施,从而在更新或替换证书时导致服务中断。
- 缺乏灵活性: 公共网络PKI不断演进。 生态系统可能会在正常运行中引入新的根节点、中间节点、证书配置文件和信任要求。 如果已固定的应用没有随着这些变化同步更新,可能无法正常运行。
- 复杂度与维护: 跨分布式应用管理和更新引脚易出错且难以扩展。 未能及时更新引脚可能导致服务中断。
- 行业共识: 主要云服务提供商和安全标准机构现在建议,除非在极少数且高度受控的场景下,否则不要对公开可信证书进行静态钉定。
Azure 指南
Azure 建议不要对公开受信任的 TLS 服务器证书进行静态固定。
连接Azure服务的应用应依赖标准TLS验证、平台托管的信任存储、证书透明度及其他现代Web PKI保护,而非固定公共可信证书或证书授权机构。
公共的Web PKI受外部管理,并随时间变化。 你无法控制证书授权机构何时轮换密钥、浏览器根程序何时更新信任要求、证书链何时变化,或何时生态系统范围的安全事件需要快速响应。 静态钉住会对这些外部组件产生依赖,并在发生变更时可能导致服务中断。
何时需要钉针
不要将本指南解读为反对所有形式的证书固定。
当部署该系统的组织掌控整个信任模型和证书生命周期时,证书固定可以成为一种有效的安全控制措施。 示例包括:
- 私有PKI
- 企业信任层级
- 设备身份系统
- 受控互认证环境
在这些情况下,组织承担相关运营风险,并能在其信任边界内协调证书生命周期变更。
静态钉扎的风险与局限性
- 服务中断: 当证书轮换、撤销、更换或迁移到新的签发层级时,固定了证书的应用可能无法正常运行。
- 维护负担: 要让这些固定项保持最新,需要持续监控并快速更新。
- 敏捷性下降: 静态钉住可能会延迟或阻断安全改进、证书授权中心迁移以及生态系统驱动的信任变更。
- 有限的安全效益: 公共云服务可能会使用共享证书授权中心。 将证书固定到公共 CA 并不能保证排他性,也未必能带来预期的安全收益。