前言
个人站点一直使用阿里云的免费SSL证书,但有效期只有3个月,一旦忘记更新访问就会有警告,不仅麻烦体验非常的不好。ChatGPT推荐使用Let's Encrypt 提供的免费 SSL 证书,虽然Let's Encrypt 的免费证书同样有效期是3个月,可以通过 certbot 自动安装和续期,非常的方便。
安装步骤(基于Ubuntu 22.04.4)
1. 安装 Certbot
sudo apt update
sudo apt install certbot python3-certbot-nginx
2. 为域名获取 SSL 证书:
使用以下命令生成证书(确保域名已指向服务器 IP):
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
替换 yourdomain.com 和 www.yourdomain.com 为您的实际域名。Certbot 会自动配置 Nginx 以使用 SSL 证书。
Tips:
- 安装过程中会要求输入一个邮箱,并询问邮箱是否可以被公开或发送一些最新资讯。
-
如果安装失败则需要从命令行的输出中找出证书存储的位置手动安装即可(如下图)
证书存储的位置
配置完成后的配置文件如下:
server {
.......
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/live/jygf.site/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/jygf.site/privkey.pem; # managed by Certbot
server_name yourdomain.com *.yourdomain.com;
......
}
Tips: 手动安装完成后,执行以下命令完成部署:
sudo certbot install --cert-name yourdomain.com
3. 自动续期:
默认情况下 certbot
已经设置了后台自动续期证书的任务。可以使用以下命令查询:
systemctl list-timers
正常情况下是可以看到`certbot 的定时任务(如下图):
certbot定时任务
如果没有查询到定时需求任务,执行以下命令手动添加:
sudo certbot renew --dry-run