分享WP资源
是件美好的事情

Nginx实现:HSTS、HPKP头部署方法

腾讯云限时秒杀活动

一、HSTS作用

HTTP严格传输安全(HTTP Strict transport security,HSTS),配置浏览器对整个域名空间使用HTTPS来加密,它具备以下优点:

1. HSTS可以禁止浏览器使用无效证书(浏览器的默认策略是让用户决定是否放行,而用户往往因为不能区分无效是因为配置问题还是攻击而选择继续访问从而导致遭受网络攻击)

2. HSTS对以下情况可以仍然保持HTTPS通信:

用户保存了原始网站的书签

不安全的Cookie

HTTPS 剥离攻击

网站内容混布,但需配合CSP(内容安全策略)

二、HSTS部署

Nginx 甚至更简单,将下述行添加到你的 HTTPS 配置的 server 块中:

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

nginx https server完整代码:

server {
   listen xxxx:443 ssl;
   server_name www.example.com;
   add_header Strict-Transport-Security "max-age=31536000;includeSubdomains;preload";
   .
}
server {
   listen xxxx:80;
   server_name www.example.com;
   return 301 https://www.example.com$request_uri;
   
}

三、HPKP作用

互联网的信任机制完全依赖于CA(证书颁发机构)厂商颁发的证书,而任意一个CA厂商都可以签发任意一个域名的证书,导致攻击者可以从CA厂商(可以参考CA厂商入侵史)开始入手。因此需要使用白名单的方式来选择信任的CA,公钥扎钉public key pinning技术的出现,可以允许你强制指定签发证书的CA,只有指定的CA为你的域名签发的证书才能使用。

目前该技术有三种实现方式,DANE(基于DNSSEC)、HTTP公钥扎钉和TACK(证书密钥可信保证),HTTP公钥钉扎是使用最多的。

四、HPKP部署

下面的例子固定到 COMODO RSA Domain Validation Secure Server CA 及备份的 Comodo PositiveSSL CA 上,30天失效期,包括所有的子域。

NGINX 的配置更简短。添加以下行到你的 HTTPS 配置的 server 块中:

add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; max-age=2592000; includeSubDomains';

nginx https server完整代码:

server {
   listen xxxx:443 ssl;
   server_name www.example.com;
   add_header Public-Key-Pins ‘pin-sha256=”klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY=;
pin-sha256=”633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q=;
max-age=2592000; includeSubDomains;
   .
}
server {
   listen xxxx:80;
   server_name www.example.com;
   return 301 https://www.example.com$request_uri;
   
}
 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:莲花不妖 » Nginx实现:HSTS、HPKP头部署方法
分享到: 生成海报

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录