使用Let's Encrypt部署https
HTTPS 优缺点
优点
- HTTPS具有更好的加密性能,避免用户信息泄露;
- HTTPS复杂的传输方式,降低网站被劫持的风险
- 搜索引擎已经全面支持HTTPS抓取、收录,并且会优先展示HTTPS结果;
- HTTPS绿锁表示可以提升用户对网站信任程度;
- 可以有效防止山寨、镜像网站等
弊端
- 繁重的计算和多次交互天然的影响了访问速度
- 网站改用HTTPS以后,由HTTP跳转到HTTPS的方式增加了用户访问耗时
- HTTPS涉及到的安全算法会消耗 CPU 资源,需要增加服务器资源(https访问过程需要加解密)
Let’s Encrypt 介绍
官方网站: https://letsencrypt.org/
免费的,自动的,和开放的证书颁发机构
部署客户端
文档: https://letsencrypt.org/docs/client-options/
Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let's Encrypt 证书。Certbot 是支持所有 Unix 内核的操作系统的,个人博客的服务器系统是CentOS 7,这篇教程也是通过在个人博客上启用HTTPS的基础上完成的。
部署过程
基于linux+nginx环境
安装 certbot
yum install certbot
下载证书
certbot certonly --webroot -w /var/www/example/ -d www.example.com -d example.com
这个命令会为 http://example.com 和 http://www.example.com 这两个域名生成一个证书,certbot
会在/var/www/example
中创建.well-known
文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问http://example.com/.well-known/
来验证你的域名是否绑定的这个服务器。如果一切正常证书会自动下载到服务器/etc/letsencrypt/live/
安装证书
修改nginx配置文件server{}
ssl on;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/www.example.com/chain.pem;
add_header Strict-Transport-Security "max-age=63072000";
Strict-Transport-Security说明: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security
最后重启nginx是证书生效
证书续期
Certbot
颁发的证书为90天的短期证书, 所以我们需要在90天内为证书续签. Certbot
提供自动续签命令.
certbot renew
可以将以上命令添加到crontab中每天运行.以下是Certbot
官方提供的crontab配置
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew