[英]How to properly set HPKP header (Public-Key-Pinning Header)?
[英]Public Key Pinning not working
您好,我正在尝试在作为另一个Web应用程序的代理运行的apache服务器上实现Public-Key-Pinning,但这无法正常工作(如果我输入了错误的哈希,该页面仍会显示而不是显示错误,这应该在Firefox或Chrome中显示)。 我确定标头是正确的-哈希正确,我已经在Chrome浏览器中对其进行了测试。
我的配置数据是
<VirtualHost *:443>
ServerName subdomain.*******.***:443
SSLCertificateFile /etc/apache2/ssl/___.crt
SSLCertificateKeyFile /etc/apache2/ssl/___.key
SSLCertificateChainFile /etc/apache2/ssl/___.ca
Header always set Public-Key-Pins "pin-sha256=\"****\"; pin-sha256=\"****\"; max-age=120; includeSubDomains"
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / ****:****/
ProxyPassReverse / ****:****/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
起初,我只有一个哈希,但是我添加了第二个哈希,以防万一需要。 我究竟做错了什么?
注意:当然,我已经启用并加载了mod_header。
需要两个哈希,并且它们必须是两个独立的哈希。 即,您不能固定颁发证书的证书和中间证书,因为它们不是独立的。 这是一项安全功能,可确保您有备份以备不时之需。
另外,只有通过的策略才会被接受,因此您不能放入伪造的策略并观看它失败,因为它永远不会被接受。
一个检查您的策略的好工具是: https : //report-uri.io/home/pkp_analyse以及同一站点上的其他工具可以实际生成您的策略: https : //report-uri.io/home/pkp_hash
但是,使用HPKP时要非常小心。 封锁您的网站非常容易,希望您不要以错误的方式使用它,这听起来并不像您完全了解HPKP,所以建议您先阅读一些内容。
有一个“仅公开密钥针报告”(目前仅在Chrome中可用),并且它可以让您对策略进行一点测试(至少可以在Chrome中使用),但是为此,您还需要使用report-uri选项(如果您不想为此编写自己的服务,也可以使用上面的网站来收集报告)。
我对此很感兴趣,如果人们不介意我在此处链接,我会在此处详细介绍它: https : //www.tunetheweb.com/security/http-security-headers/ hpkp / 。 我认为这可能是一个非常危险的选择,需要在实施之前仔细考虑。
它实际上起作用了……我的错误是我对其进行测试的方式。
所以这是我错过的最重要的事情:
BazzaDP
指出来尝试使用https://report-uri.io/home/pkp_analyse 。 如果您不熟悉HPKP,并想开始使用它,请阅读BazzaDP的答案。 Mozilla也有一些不错的文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.