加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

如何一步步构建安全的 HTTPS 站点

发布时间:2019-04-03 00:57:39 所属栏目:教程 来源:IT之鹰
导读:凡是一个 web 站点开启 HTTPS ,以 nginx 为例,我们可以这样举办设置: server{ listen443sslhttp2; server_namewww.example.com; indexindex.htmlindex.htm; root/www/www; sslon; ssl_protocolsTLSv1TLSv1.1TLSv1.2; ssl_certificate/usr/local/nginx/s
副问题[/!--empirenews.page--]

 怎样一步步构建安详的 HTTPS 站点

凡是一个 web 站点开启 HTTPS ,以 nginx 为例,我们可以这样举办设置:

  1. server { 
  2.  listen 443 ssl http2; 
  3.  server_name www.example.com; 
  4.  index index.html index.htm; 
  5.  root /www/www; 
  6.  ssl on; 
  7.  ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
  8.  ssl_certificate /usr/local/nginx/ssl/example.com.rsa.cer; 
  9.  ssl_certificate_key /usr/local/nginx/ssl/example.com.rsa.key; 
  10.  ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;; 

上述 nginx 设置中包括了设置监听端口、开启ssl、设置证书、以及支持的加密算法。一样平常来说用户会见域名不行能直接在赏识器的地点栏中输入 https://www.example.com 来举办会见,而是输入域名,默认环境下是通过 HTTP 协议来举办会见的,即 http://www.example.com,因此,在nginx 的设置中我们还必要界说一个server 段来处理赏罚 HTTP 的会见。

  1. server { 
  2.  listen 80 default_server; 
  3.  server_name _ www.example.com; 
  4.  location / { 
  5.  return 302 https://$host$request_uri; 
  6.  } 

上述设置中监听了 80端口,而且界说了一个 location,将 HTTP 哀求 302 跳转到 HTTPS 的Host 去。这样就实现了用户不管怎么会见都可以跳转到 HTTPS 。

可是题目来了,这样的设置着实是有缺陷的,假如用户端从赏识器手动输入的是 HTTP 地点,可能从其余处所点击了网站的 HTTP 链接,那么赏识器会依靠于处事端 301/302 跳转才气行使 HTTPS 处事。而第一次的 HTTP 哀求就有也许被挟制,由于中间的数据传输是明文的,就有也许会导致哀求无法达随处事器,从而组成 HTTPS 降级挟制。

要办理降级挟制,我们可以行使HSTS。

什么是 HSTS?

HSTS(HTTP Strict Transport Security,HTTP 严酷传输安详),是一套由互联网工程使命组宣布的互联网安详计策机制。网站可以通过设置 HSTS,来逼迫赏识器行使 HTTPS 与网站通讯,保障网站越发安详。

HSTS的浸染是逼迫客户端(如赏识器)行使HTTPS与处事器建设毗连。处事器开启HSTS的要领是,当客户端通过HTTPS发出哀求时,在处事器返回的超文本传输协议相应头中包括 `Strict-Transport-Security` 字段。非加密传输时配置的`HSTS`字段无效。

好比,`https://example.com/`的相应头含有`Strict-Transport-Security: max-age=31536000; includeSubDomains`。这意味着两点:

在接下来的一年(即31536000秒)中,赏识器只要向`example.com`或其子域名发送HTTP哀求时,必需回收`HTTPS`来提倡毗连。好比,用户点击超链接或在地点栏输入 `http://www.example.com/` ,赏识器该当自动将 http 转写成 `https`,然后直接向 `https://www.example.com/` 发送哀求。

在接下来的一年中,假如 `example.com` 处事器发送的`TLS`证书无效,用户不能忽略赏识器告诫继承会见网站。

怎样举办设置?

以 nginx 为例,我们在对应域名的 vhost 中增进相应头:

  1. server { 
  2.  .... 
  3.  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"; 
  4.  ... 

参数表明:

  • max-age,单元是秒,用来汇报赏识器在指按时刻内,这个网站必需通过 HTTPS 协议来会见。也就是对付这个网站的 HTTP 地点,赏识器必要先在当地替代为 HTTPS 之后再发送哀求。
  • includeSubDomains,可选参数,假如指定这个参数,表白这个网站全部子域名也必需通过 HTTPS 协议来会见。
  • preload,可选参数,HSTS 这个相应头只能用于 HTTPS 相应;网站必需行使默认的 443 端口;必需行使域名,不能是 IP。并且启用 HSTS 之后,一旦网站证书错误,用户无法选择忽略。

赏识器哀求后相应头中会表现:

  1. strict-transport-security:max-age=31536000 

如图所示:

HSTS 可以很好地办理 HTTPS 降级进攻,可是对付 HSTS 见效前的初次 HTTP 哀求,依然无法停止被挟制。赏识器厂商们为了办理这个题目,提出了 HSTS Preload List 方案:内置一份可以按期更新的列表,对付列表中的域名,纵然用户之前没有会见过,也会行使 HTTPS 协议。

今朝这个 Preload List 由 Google Chrome 维护,Chrome、Firefox、Safari、IE 11 和 Microsoft Edge 都在行使。假如要想把本身的域名加进这个列表,起首必要满意以下前提:

  • 拥有正当的证书(假如行使 SHA-1 证书,逾期时刻必需早于 2016 年);
  • 将全部 HTTP 流量重定向到 HTTPS;
  • 确保全部子域名都启用了 HTTPS;
  • 输出 HSTS 相应头:
  • max-age 不能低于 18 周(10886400 秒);
  • 必需指定 includeSubdomains 参数;
  • 必需指定 preload 参数;

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读