一个比较离谱的事情发生了,我每年在阿里云搞得免费证书现在有效期只有3个月,相当于我TM每三个月就要去手动更新一下证书,之前的博客也写了SSL这个东西简直就是一本万利的事情(局域网内搭建浏览器可信任的SSL证书),这种完全不能忍,所以拜拜了资本家,老子不用你了,免费证书不香吗?
Let’s Encrypt就是免费证书的代表,这玩意几乎所有设备都支持,并且能申请通配证书,步骤如下:
安装snapd,这是为了安装certbot的工具
yum install snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
安装certbot,这个工具就是拿来申请证书的
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
申请证书
certbot certonly --manual --preferred-challenges dns
- 在运行这个命令之后会开始证书的申请步骤,具体如下:
- 如果需要提供邮箱就按照提示输入邮箱即可;
- 按照提示输出域名,用空格分隔多个域名
- 注意:eswlnk.com和blog.eswlnk.com是两个不同的域名,如果使用通配域名就是*.eswlnk.com
- 通过提示进行DNS验证,这里按照要求添加一个TXT解析即可
- 注意:连续超过5次解析失败,服务器在未来五个小时都无法继续申请
- 成功之后就会生成对应的证书文件;
使用证书
certbot 生成的证书文件很多,其中对于nginx等常规的web server就只有两个有用:
- fullchain.pem:这个是证书文件,兼容大部分web server;
- privkey.pem:这个是秘钥文件;
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name tangyuecan.com;
ssl_certificate /ssl/fullchain.pem;
ssl_certificate_key /ssl/privkey.pem;
root /var/www/html;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass xxx.xxx.xxx.xxx:xxxx;
}
}
自动更新证书
没有想到吧,还有这个功能,原理也很简单,只要已经验证过的域名后续可以让certbot帮你自动更新,只需要在服务器上运行:
certbot renew --dry-run
📮评论