Cloudflare w/ certbot

Cloudflare ❤ Let's Encrypt!

0x00 Why

SSL 证书在某些时候是很有必要的,但是近几个月来服务器上的 certbot 总会和 nginx 打架。

而且,之前我使用的是 standalone 来更新证书,这个方法貌似又会和 Cloudflare 打架……

0x01 Get Started

友情提示: Let's Encrypt 的服务器每小时最多接受 5 次更新证书的机会。

0x02 Installation Precess

运行着的 nginx 突然自己关掉了,查了下 journalctl 发现 certbot 和 nginx 又双叒叕打架了。

遂决定手动更新证书,但是却遇到了这个错误:

Attempting to renew cert (yukinokaze.piki.moe) from /etc/letsencrypt/renewal/yukinokaze.piki.moe.conf produced an unexpected error: Failed authorization procedure. yukinokaze.piki.moe (tls-sni-01): urn:ietf:params:acme:error:tls :: The server experienced a TLS error during domain verification :: remote error: tls: handshake failure. Skipping.

于是我去 Let's Debug 上看了一眼,发现是 Cloudflare 的锅:

The domain yukinokaze.piki.moe is being served through Cloudflare CDN. Any Let's Encrypt certificate installed on the origin server will only encrypt traffic between the server and Cloudflare. It is strongly recommended that the SSL option 'Full SSL (strict)' be enabled.

好吧,但我已经开启了 Full SSL (strict) 啊……

然后看 Cloudflare 的文档,发现他们推荐通过 webroot 方式来更新证书,并且不要开启Always Use HTTPS(如果要开的话,记得在 nginx 的 conf 里添加例外,不要将 /.well-known/ 目录重定向)。

于是换成 webroot,搞定!

0x03 References

0x04 Questions

我拥有多个更新方式,会打架吗?

刚刚弄好一个,马上又遇到了这个问题:

Attempting to renew cert (yukinokaze.piki.moe) from /etc/letsencrypt/renewal/yukinokaze.piki.moe.conf produced an unexpected error: Failed authorization procedure. yukinokaze.piki.moe (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://yukinokaze.piki.moe/.well-known/acme-challenge/uqwztlywfECxKvVz2FzZh1gYhx0BlWUWmgIEkGhGoSQ: "<!DOCTYPE html>\n<!--[if lt IE 7]> <html class=\"no-js ie6 oldie\" lang=\"en-US\"> <![endif]-->\n<!--[if IE 7]>    <html class=\"no-js ". Skipping.

然后我发现,我这边其中有一个站的更新方式是 standalone,而所有在这个后面使用 webroot 的都无法更新证书。看来同时使用不同的更新方式也会导致错误?

0x05 Other Unnecessary Notes

我只用过一次 acme.sh,不知道这个和 certbot 比有什么优缺点?


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里