记:使用CloudFlare导致Let‘s encrypt证书无法renew

x-1#

一般情况下Let's encrypt加上crontab自动renew证书就好了。但是前段时间,一直收到邮件说证书即将过期,今天抽空就来看看到底是什么情况。

x-2#

在服务器上输入

certbot renew --dry-run

得到的结果是

Detail: remote error: tls: handshake failure

摸不着头脑,只能求助Google了。找到一位仁兄的解决方式
Renewing LetsEncrypt Certificate When Using Cloudflare

文章里面有提到因为Cloudflare做了反代,所以真实的IP与域名解析的IP不一致导致无法验证。
尝试了文中提到的解决方式,确实可以验证通过,并且更新了证书。

(原作者在文章最后提到如果有其它的解决方式,请留言,但是这位仁兄的Ghost并没有留言模块。希望他找到了更好的方法。)

不过由于不方便自动更新证书,找到了Cloudflare官方给出的解决方法
How to Validate a Let’s Encrypt Certificate on a Site Already Active on Cloudflare

这个方法相对来说更简单,并且可以自动更新证书。

简单总结一下

// 原文使用的是自己从github拉下来的letsencrypt脚步,我用的是certbot,不过是一样的。

certbot certonly --webroot --webroot-path /var/www/html/website --renew-by-default --email email@email.com --text --agree-tos -d domain.com -d www.domain.com

--webroot-path 网站根目录的路径
--renew-by-default 设置自动更新为默认
--email 用于注册和恢复的邮箱
--text 显示输出
--agree-tos 同意LE的协议
-d 对应的域名

正常的返回结果就会看到 #Congratulations!#

之后的renew直接用

cerbot renew

即可。用crontab定时运行更佳!

comments powered by Disqus