记:使用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定时运行更佳!