给网站加个锁-安装SSL
why:为什么要给你的网站加个“锁”?
加个“锁”是指给网站安装 SSL 凭证。加“锁”的好处是:
- 为了更好的用户体验。现在使用Https加密访问的网站应该算是少数,常见于百度搜索、淘宝等大型网站,个人博客使用SSL证书还是会让用户感觉更安全,有利于提升用户体验。一般的网站不加其实没问题,但是用户点出下面的画面会害怕。
- 为了更好的SEO效果。现在百度、谷歌等搜索引擎都鼓励网站启用Https访问,因为从技术角度上讲搜索引擎抓取Https网页不成问题,搜索结果展示也更加有利于Https的网页。
what:最后的效果是怎样?
how:如何一步一步实现?
首先我们需要去申请SSL凭证
申请凭证的流程大致上是:
1.先自己生成一個私鑰、一個申請用的憑證CSR
2.將 CSR 傳上去給憑證機構
3.憑證機構认证你真的拥有这个网域
4.下載 SSL 憑證
5.將私鑰和 SSL 憑證安裝到網站服務器上
我的网站部署在阿里云,阿里云也有免费的SSL凭证,直接在阿里云上申请,在阿里云上申请的整体步骤是这样的:
首先应该有一个阿里云账号,进入SSL证书页面,操作如下:
点击购买 就申请到一个免费的证书了
接下来是部署,返回证书控制
此处边多出了我们刚购买的证书
查看证书状态 ,等其变成已签发状态,即可使用(申请的速度都很快,几分钟内就签发)
待证书变成已签发状态,点击下载,如图
下面是nginx的部署,如若是其他服务,可参考阿里云官方帮助
一个以pem后缀 , 一个以key后缀
接下来重点来了,要部署到远程服务器上
首先远程登录服务器,在部署账户deploy下执行以下代码,换成自己网站域名和服务器ip地址
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
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;
}
}
检验效果
https://www.ssllabs.com/ssltest/index.html 可以检测 SSL 是否安装完美。SSL 有很多安全性相关标准。
以下是我的网站的测试结果:
大公告成,啦啦啦~