强制使用https和取消强制https
现代浏览器都有了强制网站使用https的习惯,不然就在地址栏上显示红色的不安全标记。网站需要设定https访问,但有时候浏览器强制地址为https也带来很多不便。因此有了下面的方法。
网站强制https访问
- 80端口跳转443端口
nginx.conf中设定(片段):1
2
3
4
5
6server {
listen 80;
listen [::]:80;
server_name domain.com;
return 301 https://$host$request_uri;
} - 设置HSTS
HTTP Strict-Transport-Security(通常简称为 HSTS)响应标头用来通知浏览器应该只通过 HTTPS 访问该站点,并且以后使用 HTTP 访问该站点的所有尝试都应自动重定向到 HTTPS。
网站通过 HTTP Strict Transport Security 标头通知浏览器,这个网站禁止使用 HTTP 方式加载,并且浏览器应该自动把所有尝试使用 HTTP 的请求自动替换为 HTTPS 请求。expire-time=31536000秒时刚好为一年。1
2Strict-Transport-Security: max-age=<expire-time>
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains备注:Strict-Transport-Security 标头在通过 HTTP 访问时会被浏览器忽略。只有在网站通过 HTTPS 访问并且没有证书错误时,浏览器才认为网站支持 HTTPS,然后遵守 Strict-Transport-Security 标头。浏览器这样做是因为攻击者可以拦截到站点的 HTTP 连接,然后注入或者删除标头。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.qs100371.top qs100371.top;
root /usr/share/nginx/html;
ssl_certificate "/root/ssl/_.qs100371.top.crt";
ssl_certificate_key "/root/ssl/_.qs100371.top.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# add_header Strict-Transport-Security "max-age=0; includeSubDomains" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
浏览器端取消强制https
很多时候又需要访问http链接,浏览器强制使用https也带来了不便。
- edge,chrome或maxthon
地址栏里输入,edge://net-internalschrome://net-internalsmx://net-internals
点击左侧Domain Security Policy,
Add HSTS domain添加域名,
Query HSTS/PKP domain查询域名,
域名有记录的会显示很长的文字。
Delete domain security policies删除域名记录。
输入域名则从强制名单中删除。 - firefox
地址栏输入,about:config
点击“我了解此风险”按钮,输入首选项“security.enterprise_roots.enabled”,把值设置为 true,清除浏览器缓存并重启浏览器。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 折腾日记!
评论