HTTPS
HTTPS的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的防护。
HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,当且仅当:
- 用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构;
- 用户相信证书颁发机构仅信任合法的网站;
- 被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
- 该证书正确地验证了被访问的网站(如,访问https://example 时收到了给“Example Inc.”而不是其它组织的证书);
- 或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被窃听者破坏。
证书提供商选择
在看到了一篇HTTPS的文章后就给自己的网站加上了https,在证书上选择了Let’s Encrypt
提供免费的,为期90天证书,但是免费啊。
安装自动部署工具
在centos7之上的系统可以直接运行以下命令
1
2
| yum install epel-release
yum install certbot
|
安装证书
1
| 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修改为你的域名。首次安装会展示一个蓝色的面板,
会要求你输入一个邮箱,和你的域名,你需要将域名绑定到你的服务器上,否则会产生炎症失败的问题
验证成功的就不插图了网上摘了一段代码来
1
2
3
4
5
6
7
8
9
10
| 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 *all* of your certificates, run "certbot
renew"
- 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
|
更新证书 &续期
首先进行模拟更新
1
| certbot renew --dry-run
|
之后写定时脚本,定期更新证书
在文件中加上一下定时命令就可以了,我的是每两个月的1号两点更新,日志输出到相应的文件
1
| * 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了,不说废话,我就直接贴出我的配置文件了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| 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但是没有小绿锁,这是由于多说引用的第三方头像导致的,以后可能考虑更换别的评论插件,或者做一下反向代理。