Caddy与Cloudflare搭配使用,配置TLS2022年5月6日15:17?Caddy默认通过Let’sEncrypt 获得TLS证书[1],90天有效期,并且会在上一次顺利申请证书60天后尝试更新。但是如果我们套上CDN,域名指向 CDN提供的CNAME,就不能通过默认方法申请TLS证书了。?1.使用自签名证书在Caddy配置文件中设置自签名,这 样可以开启到Full,但是直连源站不能开启Https,因为自签名证书不被浏览器信任。?#2.手动更新证书快到期时临时撤下C DN,更新证书,然后重新代理网站。可以开启到Full(strict)简单却麻烦。?当然也可以购买其他长期的证书,多付一些钱。 ?#3.使用Cloudflare签发的证书长效,免费,受Cloudflare认可,可以开启到Full(strict), 但是直连源站不能开启Https,证书不被浏览器信任。?#4.继续使Caddy向Let‘sEncrypt申请证书合理的 方法,也是本文主要写的方法。?ACME有3中验证方式(ACMEchallenges:HTTPchallenge,TL S-ALPNchallenge,DNSchallenge)。Caddy默认使用前两种,这里我们要使用第三种。?需要Cad dy有一个额外的模块,dns.providers.cloudflare。可以下载官方编译的,也可以用xcaddy编译。我直 接下载了官方编译的,传到服务器上。?下载地址:https://caddyserver.com/download,记得勾选dns.p roviders.cloudflare模块。?或者,自行编译:?buildxcaddy?goinstallgithub.co m/caddyserver/xcaddy/cmd/xcaddy@latestbuildcaddy?xcaddybuild-- withgithub.com/caddy-dns/cloudflare我下载的Caddy可执行文件名字叫caddy_lin ux_amd64_custom,给它可执行权限,试运行,看看有没有我们需要的模块。?chmod+xcaddy_linux_am d64_custom./caddy_linux_amd64_customlist-modules|grepdns如果正常, 会显示出dns.providers.cloudflare模块。??用自行编译/下载的Caddy,替换原来的Caddy,Cad dy一般安装在/usr/bin/,用whichcaddy这条命令来查找实际位置。?替换Caddy?sudomvcad dy_linux_amd64_custom/usr/bin/caddy建议先安装原版Caddy再替换,否则还要写一个sys temdservice文件。每次更新系统时,如果Caddy也更新了,要再次替换。?然后,要修改Caddy配置,下面两种 方法选择一种,建议每个网站独自设置,更灵活,获取Token的方法下面介绍。?全局选项(对所有网站使用DNSchalleng e)在Caddyfile最上边加入?{acme_dnscloudflare3jd7w_Awe5ybpqG6zxXr6nR T&ywQyR_EfQtKoRe(你的APItoken)}每个网站独自设置在每个网站的配置里,加入?tls{dnsclou dflare3jd7w_Awe5ybpqG6zxXr6nRT&ywQyR_EfQtKoRe(你的APItoken)}??>> 获得CloudflareAPItoken在Cloudfalre网站打开Dashboard,找到API选项,http s://dash.cloudflare.com/profile/api-tokens,新建APITOKEN,如模块作者写的那样设置?????? |
|