概述
Letsencrypt提供了免费的https证书服务,但是操作复杂,所以官方就开发了Cerbot自动化工具。
我的环境
ubuntu 20.04.5 LTS
nginx 1.18.0
python 3.8.10
配置Nginx
#可以添加多个服务,Cerbot都会自动识别
server {
listen 80;
listen [::]:80;
#这里放你要验证的域名及子域名,用空格分开,Cerbot会自动识别
server_name example.com www.example.com test.example.com;
#可选,根路径解析路径
location = / {
proxy_pass http://127.0.0.1:8080;
}
#可选,可以添加你的路由解析规则
location ~* ^/api/ {
proxy_pass http://127.0.0.1:8080;
}
#可选,可以添加你的路由解析规则
location ~* ^/page/ {
proxy_pass http://127.0.0.1:8080;
}
location ~* ^/ {
root /var/www/example/static/; #这里一定要放在最后,所有无法匹配的路径都将定位到静态文件中,Certbot会使用到该文件夹进行验证操作
}
}
安装Certbot
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot python3-certbot-nginx
执行验证
执行如下命令,根据提示一步步操作即可完成验证,完成后即可通过https访问你的网站了
$ sudo certbot run
自动更新
由于letsencrypt签名的有效期只有90天,且有效期超过30天才能重签,所以这里要加个计划任务,每周执行一次检测任务
#编辑计划任务
$ sudo crontab -e
#添加如下计划任务
#letsencrypt task every week-1 00:00
0 0 * * 1 /usr/bin/certbot renew --renew-hook “/etc/init.d/nginx reload”
#查看计划任务
$ sudo crontab -l