## 部署环境 Centos 7, Nginx 1.19
# Certbot&Nginx部署ssl证书
1、安装certbot
sudo yum install epel-release;
sudo yum install certbot;
certbot --version
如果有问题需要调整环境
sudo pip uninstall urllib3
sudo pip install urllib3
sudo easy_install urllib3==1.21.1
sudo pip install --upgrade --force-reinstall 'requests==2.6.0'
2、修改 Nginx 配置
新增一个server模块或者已有的模块中增加location:
server {
listen 80;
server_name your.domain.com; #这里填你要验证的域名
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root conf/html/; #这里需要与后文 --webroot -w 后面配置的路径一致
}
}
重启
Nginx: `service nginx reload`或者`nginx -s reload`
3、生成证书
`certbot certonly --webroot -w conf/html/ -d your.domain.com`
证书生成后位于`/etc/letsencrypt`目录
注意:-w后面的路径需要和Nginx配置中的文件路径一致
4、配置ssl
Nginx配置文件中可以对443端口增加ssl证书:
ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;
5、重新加载nginx
nginx -s reload //此时https证书已经被加载到对应的网站上。
证书颁布者为 R, 有效期为当日开始的3个月。
# 自动更新ssl证书
- 模拟证书更新:
`certbot renew --dry-run` //如果命令指令成功则可增加自动更新定时任务
- 强制更新证书:
certbot renew --force-renewal //强制更新未到期证书
- 添加自动更新定时任务:因为证书有效期只有3个月,推荐每周或者每月执行一次更新命令。
如果证书有效期还有一个月以上,执行命令后会提示无需更新。
crontab -e 或者 vi /etc/crontab
#每周日凌晨 2点执行renew任务,随后3点重新加载nginx
0 2 * * 0 /usr/bin/certbot renew >> /etc/letsencrypt/log/certbot-renew.log
0 3 * * 0 /usr/local/nginx/sbin/nginx -s reload >> /etc/letsencrypt/log/nginx-reload.log
# Certbot部署常见问题参考
https://blog.csdn.net/mxw2552261/article/details/79730757
https://blog.csdn.net/w345731923/article/details/105243372