美文网首页
系统改造Https方案

系统改造Https方案

作者: lw_w | 来源:发表于2017-09-13 11:32 被阅读0次

HTTPS

HTTPS便是HTTP Over SSL,使用SSL协议来加密HTTP通讯过程。SSL协议本质上是提供了一个加密通道,我们在这个通道中传输HTTP,便是HTTPS协议。

证书

要想进行SSL通信,服务器需要有一个权威机构认证的证书。证书是一个二进制文件,里面包含有一些信息(服务器的公钥,域名,有效时间等)。证书分为很多类型,首先分为三级认证:

  • 域名认证(Domain Validation, DV):最低级的认证,CA只检查申请者拥有某个域名,对于这种证书,浏览器会在地址栏显示一把绿色的小锁。
  • 组织认证(Organization Validation, OV):CA除了检查域名所有权以外,还会审核组织信息。对于这类认证,浏览器会在地址栏中显示公司信息。
  • 扩展认证(Extended Validation, EV):最高级别的认证,相比于组织认证,CA会对组织信息进行更加严格的审核。

很显然,认证级别越高,覆盖范围越广,证书价格越贵。本方案以腾讯云提供的域名型DV SSL为例。So Let's qcloud ssl~~

配置过程

申请证书

通过腾讯云控制台的SSL证书管理界面,便可免费申请DV SSL。申请完后需进行域名验证。通过添加域名解析指定的DNS记录验证您的域名所有权,指定如主机记录 –> TXT记录类型 –> 记录值的解析格式。域名验证成功后,便可以下载SSL证书。

配置Nginx

上传证书到服务器后,便可配置nginx采用上传的证书文件并开启https。注意安装nginx时要额外添加ssl模块:

./configure --with-http_ssl_module

Nginx开启https配置如下:

server {
  listen       80;
  server_name  www.lwblog.site;
  #使用 301 重定向,将 HTTP 协议的访问导向 HTTPS 协议。
  return 301 https://$server_name$request_uri;
}

server {
        # SSL Configuration
        listen       443 ssl;
        server_name  www.lwblog.site;
        ssl on;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        # specify cert files
        ssl_certificate /usr/local/nginx/conf/conf.d/1_www.lwblog.site_bundle.crt;
        ssl_certificate_key /usr/local/nginx/conf/conf.d/2_www.lwblog.site.key;

        location / {
           root   html;
           index  index.html index.htm;
        }
}

重启nginx,nginx -s relaod。

开启443端口

/sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart

再次访问便可以看到网站一启用了https。

安全措施

访问网站时,用户很少直接在地址栏输入https://,总是通过点击链接,或者3xx重定向,从HTTP页面进入HTTPS页面。攻击者完全可以在用户发出HTTP请求时,劫持并篡改该请求。
另一种情况是恶意网站使用自签名证书,冒充另一个网站,这时浏览器会给出警告,但是许多用户会忽略警告继续访问。
"HTTP严格传输安全"(简称 HSTS)的作用,就是强制浏览器只能发出HTTPS
请求,并阻止用户接受不安全的证书。
它在网站的响应头里面,加入一个强制性声明。以下例子摘自维基百科

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

上面这段头信息有两个作用。

1 在接下来的一年(即31536000秒)中,浏览器只要向example.com或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。用户点击超链接或在地址栏输入http://www.example.com/,浏览器应当自动将http转写成https,然后直接向https://www.example.com/发送请求。
2 在接下来的一年中,如果example.com服务器发送的证书无效,用户不能忽略浏览器警告,将无法继续访问该网站。

HSTS 很大程度上解决了 SSL 剥离攻击。只要浏览器曾经与服务器建立过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP。
该方法的主要不足是,用户首次访问网站发出HTTP请求时,是不受HSTS保护的。

相关文章

网友评论

      本文标题:系统改造Https方案

      本文链接:https://www.haomeiwen.com/subject/jpsksxtx.html