手机版
 找回密码
 微信登录无需注册

QQ登录

只需一步,快速开始

微信登录,快人一步

运维:网站如何配置HTTPS公钥扎钉HPKP

0
回复
6543
查看
[复制链接]

11

主题

0

帖子

38

积分

新韭菜

Rank: 1

积分
38
来源: 2017-12-15 15:23:48 显示全部楼层 |阅读模式
运维:网站如何配置HTTPS公钥扎钉HPKP                                        
                                                                                蓝点网                                        2017-08-29               
                                                                                        三月份时蓝点网介绍了在HTTPS加密安全传输里有关 HSTS 严格安全传输的部分内容及服务器上的部署教程。
                                                                                                                    HSTS解决的问题是用户在直接访问 HTTP 明文连接向 HTTPS 加密连接进行重定向时可能遭遇到的劫持问题。
                                                                                                                    这篇文章将向大家介绍网站安全访问 HPKP 公钥扎钉的内容,公钥扎钉主要解决是证书颁发机构的安全风险。
                                                                                                                    什么是HPKP公钥扎钉:
                                                                                                                    公钥扎钉主要是为网站所使用的证书生成固定的哈希值, 然后在用户访问时将这个哈希值传递给浏览器保留。
                                                                                                                    而在用户下次访问时浏览器会先核对证书哈希值与此前留存的哈希值是否相同, 如果不同那么将会断开连接。
                                                                                                                    进行公钥扎钉后即使网站使用的是合法证书但哈希值不同, 那么浏览器也会按照默认策略及时断开网络连接。
                                                                                                                    公钥扎钉的意义何在:
                                                                                                                    公钥扎钉主要解决的问题是若某个合法的CA证书颁发机构遭到攻击而签发了不该签发的证书被用来劫持网站。
                                                                                                                    举例如下:证书颁发机构A遭到黑客攻击为网站B签发了证书C,攻击者D通过这个合法证书C劫持用户的访问。
                                                                                                                    在上述场景中由于证书C本身是合法的证书因此浏览器不会拦截,但实际上用户的访问却已经遭到了D的劫持。
                                                                                                                    而证书颁发机构A可能因为各种原因导致签发了证书C,例如遭到黑客攻击或者故意签发证书 C用来劫持等等。
                                                                                                                    HPKP 公钥扎钉可以让管理员指定浏览器只接受自己的证书,  即使其他证书颁发机构签发的合法证书也拦截。
                                                                                                                    公钥扎钉可能带来的麻烦:
                                                                                                                    如果前期已经部署了公钥扎钉固定了正在使用的证书信息,这个时候这个证书出现问题需要更换那就麻烦了。
                                                                                                                    更换证书意味着原本浏览器留存的哈希值和当前哈希值不同,因此浏览器会直接拦截掉老用户正常访问请求。
                                                                                                                    为了解决这个问题公钥扎钉固定的证书哈希值通常是中级证书,也就是你使用证书的上级 CA 证书颁发机构。
                                                                                                                    这样证书需要更换但依然还是由相同的CA机构颁发, 在上级CA机构没有变的情况下证书哈希值自然相同的。
                                                                                                                    那么上级CA颁发机构是否会出现问题呢?显然该情况存在,因此在部署公钥扎钉时通常我们会部署两个CA。
                                                                                                                    部署前须知:
                                                                                                                    蓝点网目前主要使用的是由中级证书颁发机构TrustAsia亚洲诚信签发的通配符证书,亚信上级为 VeriSign。
                                                                                                                    蓝点网还有个是中级证书颁发机构科莫多COMODO签发的普通证书,科莫多的上级颁发机构是 UserTrust。
                                                                                                                    因此蓝点网选择进行主备用公钥扎钉的分别是亚洲诚信和科莫多的中级证书,即这固定这两个证书的哈希值。
                                                                                                                    1、首先你需要前往证书颁发机构那里取得对应的中级证书,通常在证书颁发机构给你签发的证书包里会有;
                                                                                                                    2、我们将两个中级证书分别命名为trustasia.pem和comodo.pem (若是crt格式可直接将后缀改成pem);
                                                                                                                    3、将这两个证书上传至Linux服务器的Root目录中,然后通过SSH连接服务器对证书进行校验并生成哈希值;
                                                                                                                    #接着生成Public.key
                                                                                                                    4、现在我们已经分别获得了亚洲诚信和科莫多中级证书的哈希值,接下来将哈希值添加到网站配置文件中。
                                                                                                                    5、以Nginx为例:修改网站的配置文件conf并加入公钥扎钉设置:
                                                                                                                    其中ping-sha256后的分别是亚洲诚信和科莫多中级证书的哈希值,请在修改时改成你获取到的证书哈希值。
                                                                                                                    6、保存conf文件再上传到服务器上然后重启Nginx服务service nginx restart即可,然后用SSLLABS测试下。
                                                                                                                                                
                                                    IXFf5Ykkrgo7yxKg.jpg                         
                                                        
                                                                                                                                                                        7、测试成功的话SSLLABS会在HPKP选项里出现你配置好的两个哈希值, 到这里HPKP公钥扎钉配置已完成。
                                                                                                                    只有一个证书怎么办?
                                                                                                                    如果你只有一个证书那么可以将Mozilla旗下的免费证书项目的中级证书取得哈希值然后进行HPKP公钥扎钉。
                                                                                                                    Lets Encrypt 签发的证书本身是免费签发的,因此假如你现有的证书出现问题可以让去签发个新的证书使用。
                                                                                                                    原理是你固定的已经是 Lets Encrypt Authority X3 证书哈希,而通过Mozilla新签发的证书由前面证书签发。
                                                                                                                                                
                                                    BAAAi5cr6Pz3Icai.jpg
回复

使用道具 举报