给网站加个锁-安装SSL

给网站加个锁-安装SSL

why:为什么要给你的网站加个“锁”?

加个“锁”是指给网站安装 SSL 凭证。加“锁”的好处是:

  • 为了更好的用户体验。现在使用Https加密访问的网站应该算是少数,常见于百度搜索、淘宝等大型网站,个人博客使用SSL证书还是会让用户感觉更安全,有利于提升用户体验。一般的网站不加其实没问题,但是用户点出下面的画面会害怕。
file
  • 为了更好的SEO效果。现在百度、谷歌等搜索引擎都鼓励网站启用Https访问,因为从技术角度上讲搜索引擎抓取Https网页不成问题,搜索结果展示也更加有利于Https的网页。

what:最后的效果是怎样?

file

how:如何一步一步实现?

首先我们需要去申请SSL凭证

申请凭证的流程大致上是:
1.先自己生成一個私鑰、一個申請用的憑證CSR
2.將 CSR 傳上去給憑證機構
3.憑證機構认证你真的拥有这个网域
4.下載 SSL 憑證
5.將私鑰和 SSL 憑證安裝到網站服務器上

我的网站部署在阿里云,阿里云也有免费的SSL凭证,直接在阿里云上申请,在阿里云上申请的整体步骤是这样的:

file

首先应该有一个阿里云账号,进入SSL证书页面,操作如下:

file
file
file
file
file

点击购买 就申请到一个免费的证书了

file

接下来是部署,返回证书控制

file

此处边多出了我们刚购买的证书

file
file
file
file

查看证书状态 ,等其变成已签发状态,即可使用(申请的速度都很快,几分钟内就签发)

file

待证书变成已签发状态,点击下载,如图

file
file

下面是nginx的部署,如若是其他服务,可参考阿里云官方帮助

file
file

一个以pem后缀 , 一个以key后缀

接下来重点来了,要部署到远程服务器上
首先远程登录服务器,在部署账户deploy下执行以下代码,换成自己网站域名和服务器ip地址

mkdir cert
scp xxx_www.yourdomain.com.key [email protected]:~/cert
scp xxx_www.yourdomian.com.pem [email protected]:~/cert

这样就把两个SSL文件上传到了服务器

然后修改你的nginx配置文件,加上 HTTPS 設定以及啟用 HTTP/2

server {
  listen       443 ssl http2;
  ssl on;
  ssl_certificate       /etc/nginx/signed.crt;  # 这是跟凭证机构申请后,拿回来的凭证 Key,要注意改成你的文件位置
  ssl_certificate_key    /etc/nginx/domain.key; # 这是一开始我们自己产生的 Private Key,要注意改成你的文件位置

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  ssl_prefer_server_ciphers on;
  # by https://mozilla.github.io/server-side-tls/ssl-config-generator/
 ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';

  server_name www.rails-recipes.win;

  root /home/deploy/rails-recipes/current/public;
  passenger_enabled on;

  passenger_min_instances 1;

  location ~ ^/assets/ {
    expires 1y;
    add_header Cache-Control public;
    add_header ETag "";
    break;
  }
}

如果你只打算 HTTPS 安全连线,可以将所有 HTTP 连线重导到 HTTPS,操作:删掉原有的80端口配置,添加以下80端口配置:

  server {
    listen 80;
    server_name www.rails-recipes.win;
    server_tokens off;
    location / {
      return 301 https://$host$request_uri;
    }
  }

检验效果

file

https://www.ssllabs.com/ssltest/index.html 可以检测 SSL 是否安装完美。SSL 有很多安全性相关标准。

以下是我的网站的测试结果:

file

大公告成,啦啦啦~

参考文章

  • 阿里云免费证书ssl的部署
  • 全栈营教程

你可能感兴趣的:(给网站加个锁-安装SSL)