给自己的站点加上https——为自己的域名加上一把绿色的小锁

HTTPS

HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的防护。
HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,当且仅当:
1. 用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构;
2. 用户相信证书颁发机构仅信任合法的网站;
3. 被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
4. 该证书正确地验证了被访问的网站(如,访问https://example 时收到了给“Example Inc.”而不是其它组织的证书);
5. 或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被窃听者破坏。

证书提供商选择

在看到了一篇HTTPS的文章后就给自己的网站加上了https,在证书上选择了Let’s Encrypt
提供免费的,为期90天证书,但是免费啊。

安装自动部署工具

在centos7之上的系统可以直接运行以下命令

// SHELL CODE

yum install epel-release
yum install certbot

安装证书

// SHELL CODE

certbot certonly -webroot -w /var/www/example -d example.com -d www.example.com -w /var/www/thing -d thing.is -d m.thing.is

将上面的/var/www/example 修改为你的站点的路径,example.com修改为你的域名。首次安装会展示一个蓝色的面板,
会要求你输入一个邮箱,和你的域名,你需要将域名绑定到你的服务器上,否则会产生炎症失败的问题error
验证成功的就不插图了网上摘了一段代码来

// SHELL CODE

IMPORTANT NOTES: Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/your.domain.com/fullchain.pem. Your cert
will expire on 20XX-09-23. To obtain a new or tweaked version of
this certificate in the future, simply run certbot again. To
non-interactively renew <em>all</em> of your certificates, run "certbot
renew&#8221;
- If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

更新证书 &续期

首先进行模拟更新

// SHELL CODE

certbot renew -dry-run

之后写定时脚本,定期更新证书

// SHELL CODE

crontab -e

在文件中加上一下定时命令就可以了,我的是每两个月的1号两点更新,日志输出到相应的文件

// SHELL CODE

* 2 1 */2 * certbot renew -dry-run >> /var/log/le-renew.log

在执行 crontab -e你的服务器可能会提示你 no crontab for root – using an empty one,这时你需要在进入编辑页面就按住“shift”+ “+”键

配置nginx

执行完以上操作就算是对证书这块做完了,剩下的事情就是配置nginx以支持https了,不说废话,我就直接贴出我的配置文件了

// SHELL CODE

server{
#listen 80;
listen 443 ssl http2;
server_name songyichao.com;
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
ssl_certificate /etc/letsencrypt/live/songyichao.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/songyichao.com/privkey.pem;
#charset koi8-r;
ssl_trusted_certificate /etc/letsencrypt/live/songyichao.com/chain.pem;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
access_log logs/host_songyichao.access.log main;
root /search/service/nginx/html/songyichao;
index index.php index.html index.htm;
location / {
if (!-e $request_filename){
rewrite ^/(.*) /index.php last;
}
}
...
}

至此,网站的小绿锁就加完了。但是我的虽然加上了https但是没有小绿锁,这是由于多说引用的第三方头像导致的,以后可能考虑更换别的评论插件,或者做一下反向代理。