灰灰 の blog

灰灰✿喵呼哈哈(>^ω^<)

本站启用了HSTS及加入HSTS Preload List还有SSLLabs分数达到A+

2016.7.18 | 3,584阅读 | 1条评论 | Apache

最近折螣了下SSL,如果有关注的话可以发现本站的证书从 Let’s Encrypt -> StartSSL -> COMODO -> GeoTrust ,中间也是经历了不少波折,然后想再加个HSTS,发现没有什么现成的方案,那只能自己研究咯╮(╯_╰)╭

HSTS

HSTS是“HTTP Strict Transport Security”(HTTP严格安全传输)的缩写,开启了这项设置以后,主流浏览器会强制性地使用HTTPS来请求资源,能够更加有效地保护你网站和用户的数据安全。

首先HSTS要加个Strict-Transport-Security的Header,格式如下

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

有两种方案,第一种是在php使用header函数,第二种是在Apache设置Header
由于本站静态化了╮(╯_╰)╭,第一种只能抛弃咯,然后就去研究Apache

首先是加入Header的语句,via,直接使用Header set就好

然后是判断,翻了下才发现原来Apache也有if语句(via),那就好,用if语句判断是否使用SSL,是就加入HSTS头,不是就301跳转,嗯,灰灰我真是个天才

把设定加入根目录的.htaccess即可,下面是本站完整的.htaccess

# 针对 Hostker 主机的 SSL 监听方案
RewriteEngine On
RewriteCond %{HTTP:KERSSL} !on
RewriteRule (.*) https://huihui.moe/$1 [NC,L,R=301]
 
<If "%{HTTP:KERSSL} == 'on'">
    # Header Set
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    Header always set Public-Key-Pins 'pin-sha256="l2yRLumd//mpm/WYi63mkNBZrNOpv+iqbuuqZHz2FZk="; pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="amMeV6gb9QNx0Zf7FtJ19Wa/t2B7KpCF/1n2Js3UuSU="; max-age=2592000'
</If>
 
# BEGIN WPSuperCache
RewriteBase /
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{DOCUMENT_ROOT}/cache/supercache/%{SERVER_NAME}/$1/index-https.html -f
RewriteRule ^(.*) "/cache/supercache/%{SERVER_NAME}/$1/index-https.html" [L]
# END WPSuperCache
# BEGIN WordPress
RewriteRule ^static/(.*) /wp-content/themes/huihui/$1 [L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
 
#允许跨域
<FilesMatch "\.(svg|ttf|otf|eot|woff|woff2)$">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>
 
## 设置出错页面
# 设置404 页
ErrorDocument 404 /404
## 设置缓存策略
# 启用缓存功能
ExpiresActive On
# 指定文件缓存5天
<FilesMatch "\.(css|js|ico|eot|ttf|woff)$">
    ExpiresDefault "access plus 5 days"
</FilesMatch>

HSTS Preload List

对于 HSTS 生效前的首次 HTTP 请求,依然无法避免被劫持。浏览器厂商们为了解决这个问题,提出了 HSTS Preload List 方案:内置一份可以定期更新的列表,对于列表中的域名,即使用户之前没有访问过,也会使用 HTTPS 协议。

详细的介绍可以看ququ大大的文章,申请链接在这里,下面是本站申请成功截图留念~

截图20160717225708

大概在2-3个月左右,本站就会被编译进Chrome中啦~在介里可以看到详细Preload列表


更新:

目前 huihui.moe 已經加入 HSTS Preload List, 被硬編碼進了 chrome, 可喜可賀~哇依~

sp160829_112457

詳看 Chromium 源碼, 本站在 14295 行~www

SSLLabs测试

SSLLabs是个测试https客户端/服务端兼容性的项目,本站的测试结果

截图20160718005547

达到A+啦~干杯~( ゜- ゜)つロ

おわり

(又水了一篇文章o((;>口<;))o

1 条评论
  1. 老陈网志   2016-11-25 15:57

    收藏了!不错的内容=-=

发表评论

表情