2015-10-27 38 views
1

您好我正在尝试在我的apache服务器上运行公钥密码,作为另一个web-app的代理运行,但它不起作用(如果输入错误的哈希,页面仍然而不是显示错误,这应该在Firefox或Chrome中显示)。我确定标题是正确的 - 散列是正确的,我已经用Chrome对它进行了测试。公钥不能正常工作

我Configdata是

<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启用和加载。

回答

3

需要两个哈希值,它们必须是两个独立的哈希值。即您不能固定颁发证书和中间证书,因为它们不是独立的。这是一项安全功能,可确保您备有需要的备份。

此外,只有通过策略才能接受策略,因此您无法投入虚假策略并观察失败,因为它永远不会被接受。

一个很好的工具来检查你的政策是这样的一个: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/。我认为这是一个非常危险的选择,在实施之前需要仔细考虑。

+0

对不起,如果它看起来像我不懂HPKP,因为我已经面对最近通知我自己有关它很多...但我不与服务器很多工作。正如你可以在2分钟内看到我的'max-age'一样 - 所以我不会锁定我的服务器。 我一定错过了两次哈希的部分。谢谢 - 我会看看你的资源。 – JSHelp

0

它实际上工作...我的错误是我测试它的方式。

因此,这里是我错过了最重要的东西:

  1. 您需要至少一个备份针
  2. 如果测试没有在头改变散,但无论是SSL证书或(更好)尝试更改本地保存的散列。或者感谢BazzaDP指出它尝试使用https://report-uri.io/home/pkp_analyse

如果您是HPKP的新手,并且想开始使用它,请阅读BazzaDP的答案。 Mozilla也有一些很好的文档。

+0

所以你没有接受我的答案的任何理由? –

+0

@BazzaDP对不起,我真的想接受我的答案......但我想你的一个更值得它 – JSHelp

+0

我们还需要记住,如果我们正在使用的Web服务器的证书,浏览器不会接受HPKP头是自签名的。出于测试目的,我们可以在本地创建证书颁发机构(CA),将其添加到浏览器受信任的CA列表中,并使用创建的CA签署我们正在测试的Web服务器的证书。 –