Certbot
不错,今天的主角就是给力的 Certbot,免费好用,真是我等 diaosi 的一大福音。
我们先打开其官网,整体浏览下
我们可以看到,想使用 Certbot,需要一些条件
- 需要一个命令行服务器,一般就是 linux了。我这里使用的是 CentOS6。
- 我们需要已经部署了一个 http 服务,80 端口是监听状态的,我使用的是 Nginx 代理。
- 有执行 root 权限的用户。
具体安装
在使用官网上的安装步骤前,我们要先有 Nginx,并且已经成功启动,当然也要有绑定了公网 IP 的域名,因为 SSL 证书都是要绑定到具体域名的。
公网 IP,域名申请,Nginx 安装等,就不说啦,我们现在来看一下我这里 Nginx 的简单配置。
server { listen 443; server_name www.kungfuworld.top; ssl on; root /home/KungFuWorld/ ; access_log /home/log/access.log; error_log /home/log/error.log; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; index index.html index.htm; } } server { listen 80; server_name kungfuworld.top; rewrite ^(.*)$ https://$host$1 permanent; }
我配置的域名是 www.kungfuworld.top,后面在执行 Certbot 安装时,会自动扫描到这里配置的域名,从而根据这个域名来生成证书。
下面,就是一步步的按照官网的步骤来操作就好了
安装 Certbot
wget https://dl.eff.org/certbot-auto sudo mv certbot-auto /usr/local/bin/certbot-auto sudo chown root /usr/local/bin/certbot-auto sudo chmod 0755 /usr/local/bin/certbot-auto
生成证书
sudo /usr/local/bin/certbot-auto certonly --nginx
中间会有一些需要用户交互的步骤,按照提示操作就好
配置 Nginx
ssl_certificate /etc/letsencrypt/live/kungfuworld.top/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kungfuworld.top/privkey.pem;
在刚刚的 Nginx 配置文件中,增加上面的两条配置,就完成了证书的配置。
如果不出意外,该域名的 HTTPS 就可以访问了,而且是浏览器信任的证书。
自动更新
使用 Certbot 安装的证书,只有 90 天的有效期,还好其提供了方便的自动更新功能
/usr/local/bin/certbot-auto renew
我们可以创建一个 crontab 任务,来自动更新
0 4 */80 * * /usr/local/bin/certbot-auto renew &>> /dev/null
每隔 80 天在凌晨 4 点执行一次 renew 操作
至此,基于 Certbot 的 HTTPS 配置就完成了。