HTTPS配置HPKP

By | July 10, 2017

Create On: 2017/07/09

本文很大程度上是参考其他英文资料(见文末的“参考资料”)总结的简要步骤翻译而成,如有侵权,请联系本人(联系方式本站中有)。

本文是关于增强HTTPS安全性的配置,所用服务器软件是Nginx,HTTPS证书由Certbot自动生成,因为本文内容的应用范围也只适用于Certbot生成的HTTPS配置,或许也可作为对以其他方式配置的HTTPS在HPKP方面进行安全优化的参考。

HPKP,英文HTTP Public Key Pinning,中文译为“HTTP公钥固定扩展”,是HTTPS网站防止攻击者使用CA错误签发的证书进行中间人攻击的一种安全机制,用于预防诸如攻击者入侵CA偷发证书、浏览器信任的CA签发伪造证书等情况。采用该机制后,网站服务器会提供一个公钥哈希列表,客户端在后续通讯中将只接受该列表上的一个或多个公钥。(据维基百科

  1. 生成第一个指纹:

  2. 执行以下命令:
  3. 生成备份key、csr和各自的指纹:


    以上生成的三个指纹都类似。
  4. 添加HPKP头到Nginx配置中:

    在server块中添加:

    注意:如果网站使用的CDN(内容分发网络)的主机是网站域名的子域名,那么add_header不要在后面添加includeSubDomains,这时就变成:

    保存文件、退出,并重启Nginx。
    然后到https://www.ssllabs.com/ssltest/analyze.html?d=yourdomain.com检查HTTPS的安全性。

参考资料:
Certbot and HTTP Public Key Pinning (HPKP)


© 2017 – 2019, Navin. All rights reserved.

鉴于本人的相关知识储备以及能力有限,本博客的观点或者描述如有错漏或是有考虑不周到的地方还请多多包涵,也欢迎指正,一起学习,共同进步。

0