迁移到HTTPS这么麻烦,为什么还要折腾?

2020-02-22  

我的博客网站是使用 HTTP 协议的,使用 Google Chrome 浏览器访问就会在地址栏提示不安全。

这让人很不舒服,于是乎,折腾起 HTTPS ...

 

为什么一般不愿意迁?

  • 购买证书,要钱,老早证书都是按年收费的。现在使用云服务器,一般都能免费申请证书了。
  • 配置证书又是一堆操作,麻烦;涉及到的内容也多
  • 对服务器进行认证、对通信进行加解密,肯定是有多余开销的,速度肯定是会慢的

 

迁移到 HTTPS 还是很有必要的

  • 浏览器在访问 HTTP 协议的网站时,就会在地址栏提示 "不安全",给用户的感觉很不友好;Google Chrome 浏览器在 HTTPS 协议站点的地址栏左边就加了一把表示安全的"锁"。
  • 很多开放平台早就要求绑定 url 必须是 HTTPS 协议,如微信、苹果、安卓开放平台。我个人想做小程序,url 就必须是 HTTPS 的,不然根本玩不了。
  • Google、百度搜索引擎降低了 HTTP 协议的站点的排名,加大了 HTTPS 站点的权重。
  • HTTPS 比 HTTP 安全,加入了 SSL 层,用证书验证服务器的身份,并为浏览器和服务器之间的通信加密
  • HTTPS 能够有效防止运营商流量劫持、阻止自己网站莫名的弹窗广告

无奈,"要不要迁移到 HTTPS" 的问题,就变成了 "怎么迁移到 HTTPS" 的问题。

 

申请证书与配置

我的阿里云服务器加了一层 nginx,迁移到 HTTPS 还是挺简单的。

参照的这篇文档,一次性搞定

https://help.aliyun.com/document_detail/98728.html?spm=5176.2020520163.0.0.2c6bizEHizEHt6

主要步骤:

  • 申请免费的 ssl 证书,只能是一年,到期要不要收费未知。
  • 下载 .pem 证书文件和 .key 密钥文件,修改命名
  • nginx/conf 建 cert 目录,放证书文件和密钥文件
  • 修改 nginx.conf 文件
# 开启443端口
# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
 listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
 server_name localhost;  #将localhost修改为您证书绑定的域名
 root html;
 index index.html index.htm;
 ssl_certificate cert/domain name.pem;   #将domain name.pem替换成您证书的文件名。
 ssl_certificate_key cert/domain name.key;   #将domain name.key替换成您证书的密钥文件名。
 ssl_session_timeout 5m;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件。
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
 ssl_prefer_server_ciphers on;   
 location / {
  root html;   #站点目录。
  index index.html index.htm;   
 }
}     
  • 保存 nginx.conf 配置文件,重启或重新加载 nginx 服务
  • 修改 nginx 配置,让 HTTP 的 url,重定向到 HTTPS
server {
 listen 80;
 server_name localhost;   #将localhost修改为您证书绑定的域名
 rewrite ^(.*)$ https://$host$1 permanent;   #将所有http请求通过rewrite重定向到https
 location / {
  index index.html index.htm;
 }
}

 

PS:

  • Let's Encrypt 也可以免费申请证书,有效期较短,90 天,要定时更新
  • https://www.ssllabs.com/ 可以测试网站的安全程度

 

ConstXiong 备案号:苏ICP备16009629号-3