QUIC实战(三) letsencrypt证书申请和自动续期

部署完QUIC集群之后,原来申请的https证书到期了,就尝试了下重新安装/更新证书。

Let’s Encrypt 是一个自动签发 https 证书的免费项目
Certbot 是 Let’s Encrypt 官方推荐的证书生成客户端工具

因为我的quic集群是直接把原来的证书复制到自定义的目录下,所以没有安装过certbot,先安装下certbot。

安装Certbot

先安装snapd,根据自己的linux系统(我的是Red Hat Enterprise Linux 8),选择对应的snapd安装教程

安装snapd
$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ sudo dnf upgrade
$ sudo yum install snapd

创建软链接

$ sudo systemctl enable --now snapd.socket
$ sudo ln -s /var/lib/snapd/snap /snap
安装Certbot
## 更新snap到最新的版本
sudo snap install core
sudo snap refresh core
## 去除其余Certbot操作系统包 确保安装后使用certbot命令使用的是snap
sudo apt-get remove certbot
sudo dnf remove certbot
sudo yum remove certbot

sudo snap install --classic certbot
#创建软链接
sudo ln -s /snap/bin/certbot /usr/bin/certbot

renew 证书

因为在机器上我已经存放了旧的证书,所以我一开始的想法是直接更新旧证书就可以了,先通过certbot certificates查看下当前服务器的证书信息
但是结果没有返回当前的证书信息给我。我猜测可能是由于我之前迁移证书的时候只迁移了配置nginx需要的pem文件,存放路径也和旧集群安装证书时的默认路径不一样。

我将原来的证书路径/etc/letsencrypt 下的所有文件都打包后上传到新集群的Nginx机器上同样的路径,再使用certbot certificates 查看证书就可以看到旧证书了
QUIC实战(三) letsencrypt证书申请和自动续期_第1张图片
接下来使用certbot renew 命令更新证书就行了

遇到的问题:
QUIC实战(三) letsencrypt证书申请和自动续期_第2张图片
在更新证书的时候,会出现如上报错,说是访问xxx/.well-known/acme-challenge/xxx
来验证域名所有权的时候出现连接不通的情形。

因为使用aws部署的nginx集群,把域名绑定到了负载均衡器上,一开始负载均衡器只侦听了quic的443端口,添加了对80端口的侦听之后不再提示无法连接而返回404错误码。

判断是由于上述路径无法访问到的问题,多次尝试后始终匹配不到路径;最后想到这个请求是为了验证域名所有权,但是我是将域名绑定到了负载均衡器上,而不是更新证书的服务器上,将域名绑定到服务器ip上之后再次执行certbot renew ,就更新成功了

由于新证书的路径跟之前的不一样,nginx配置文件里的证书路径需要修改成如下:

ssl_certificate /etc/letsencrypt/live/you.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/you.domain.com/privkey.pem; 

更新完证书之后又把域名绑定到负载均衡器上

letsencrypt 证书请求频率限制

https://letsencrypt.org/zh-cn/docs/rate-limits/
每个账户每小时每域名有最多验证失败 5 次的限制。该限制次数在测试环境中更高(每小时允许 60 次验证失败)
每个注册域名每周最多 5 张重复证书的限制

所以在我反复使用certbot renew命令的时候可能会出现达到上限的提示,过一段时间之后再尝试就可以了

最终我只是进行了证书迁移和更新,但是这样的操作后续更新还是会有问题(需要把域名绑定到对应的服务器ip上),还是比较麻烦的。
后续会继续研究下,如果有好的解决方案会更新博客。如果大家有处理过类似的问题也可以分享下

参考资料:
Installing snap on Red Hat Enterprise Linux (RHEL)
None of the above on CentOS/RHEL 8

你可能感兴趣的:(linux,quic,https,letsencrypt)