Certbot签发和续期SSL证书

项目中一直使用阿里云的免费SSL证书,1年有效期(https://www.aliyun.com/product/cas)

由于近期阿里云调整了免费证书的有效期为3个月,给项目维护提供了不便

采用Certbot可以实现签发和自动续期SSL证书

一、Let’s Encrypt、Certbot和Snap的关系

Let’s Encrypt是一个免费、自动化和开放的证书颁发机构,由非营利的互联网安全研究小组(ISRG)为您提供。

Certbot使用EFF的Certbot在您的网站上自动启用HTTPS,部署Let’s Encrypt证书。

Snap则是用于下载安装Certbot的包管理器。

所以,核心是Let’s Encrypt证书,Snap和Certbot则是用于生成管理证书的工具。

二、官方Certbot安装(与nginx进行证书绑定)

官网地址:https://certbot.eff.org/

1、安装snapd

增加EPEL仓库

sudo yum -y install epel-release

安装snapd

sudo yum -y install snapd

启用snapd socket

systemctl enable --now snapd.socket

创建一个软连接 /snap 到 /var/lib/snapd/snap,安装软件需要在 /snap中

sudo ln -s /var/lib/snapd/snap /snap

2、安装certbot

确保snapd是最新版本

sudo snap install core
sudo snap refresh core

移除certbot-auto和任何Certbot OS包

sudo yum remove certbot

安装certbot

sudo snap install --classic certbot

准备Certbot命令

sudo ln -s /snap/bin/certbot /usr/bin/certbot

选择nginx运行方式

# 自动配置nginx
sudo certbot --nginx
# 手动配置nginx
sudo certbot certonly --nginx

自动续期

sudo certbot renew

3、签发&配置证书

签发证书
注意:签发证书前要先关闭Nginx服务!!!
注意:签发证书前要先关闭Nginx服务!!!
注意:签发证书前要先关闭Nginx服务!!!

# 使用dns方式(需在域名管理中配置_acme-challenge.<YOUR_DOMAIN>的TXT记录)

certbot certonly --email xxx@126.com --manual --preferred-challenges dns -d a.xxx.com


# 签发过程中会生成TXT记录值,此时不要着急下一步,需要先解析好TXT记录。
# 在你添加完记录保存之后,最好要检查一下解析记录
nslookup -type=txt _acme-challenge.example.com 8.8.8.8
# 或者
dig -t txt _acme-challenge.example.com
# 如果包含你所添加的记录值,那么说明添加成功

那现在就可以控制台继续回车,不会意外就会把签发的证书文件保存,控制台打印出来证书文件的存放位置,一般情况下是会保存在/etc/letsencrypt/live/example.com目录下

这个目录下一般会有四个文件:

cert.pem: 服务器证书
chain.pem: 包含Web浏览器为验证服务器而需要的证书或附加中间证书
fullchain.pem: cert.pem + chain.pem
privkey.pem: 证书的私钥

修改nginx配置文件

server {
    listen  443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_session_timeout 10m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    location / {
        # 你自己配置;
    }
}

配置好 Nginx 配置文件,重载使修改生效

sudo nginx -s reload

4、定时检查自动续期

crontab -e的命令来启用自动任务,命令行:

# 这个脚本表示每隔 7 天,夜里 3 点整自动执行检查续期命令一次。续期完成后,重启 nginx 服务

0 3 */7 * * /bin/certbot renew --renew-hook "/where/your/nginx -s reload" 

添加完后重启cron服务即可

service crond restart

参考文档

https://blog.youkuaiyun.com/cljdsc/article/details/133461361

https://blog.youkuaiyun.com/wangyun381974024/article/details/128319707

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值