Centos7利用Certbot部署和更新Nginx下的SSL证书

## 部署环境 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个月。

Centos7利用Certbot部署和更新Nginx下的SSL证书_第1张图片


 

# 自动更新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

你可能感兴趣的:(nginx,ssl,https)