加个“锁”是指给网站安装 SSL 凭证。加“锁”的好处是:
申请凭证的流程大致上是:
1.先自己生成一個私鑰、一個申請用的憑證CSR
2.將 CSR 傳上去給憑證機構
3.憑證機構认证你真的拥有这个网域
4.下載 SSL 憑證
5.將私鑰和 SSL 憑證安裝到網站服務器上
我的网站部署在阿里云,阿里云也有免费的SSL凭证,直接在阿里云上申请,在阿里云上申请的整体步骤是这样的:
此处边多出了我们刚购买的证书
查看证书状态 ,等其变成已签发状态,即可使用(申请的速度都很快,几分钟内就签发)
待证书变成已签发状态,点击下载,如图
下面是nginx的部署,如若是其他服务,可参考阿里云官方帮助
一个以pem后缀 , 一个以key后缀
接下来重点来了,要部署到远程服务器上
首先远程登录服务器,在部署账户deploy下执行以下代码,换成自己网站域名和服务器ip地址
shell:remote terminal
mkdir cert
scp xxx_www.yourdomain.com.key deploy@xxx.xxx.xxx.xxx:~/cert
scp xxx_www.yourdomian.com.pem deploy@xxx.xxx.xxx.xxx:~/cert
这样就把两个SSL文件上传到了服务器
然后修改你的nginx配置文件,加上 HTTPS 設定以及啟用 HTTP/2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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端口配置:
1 2 3 4 5 6 7 8 | server { listen 80; server_name www.rails-recipes.win; server_tokens off; location / { return 301 https://$host$request_uri; } } |
https://www.ssllabs.com/ssltest/index.html 可以检测 SSL 是否安装完美。SSL 有很多安全性相关标准。
以下是我的网站的测试结果:
大公告成,啦啦啦~