前言
懒人直接看下面的跟着做就行了,想要自己编译的可以看这个
文章目录[隐藏] 前言 教程 测试是否生效 前言 最近在折腾Caddy,发现挺多有趣的非标准模块,例如这个github.com/caddy-dns/cloudflare就非常必要,通过CF的dns来验证域名办法SSL证书。还有些WAF模块也不错。 教程 准备工作 首先大多数人都是linux下跑caddy的吧,所以准备一台Linux的机器,我这里用的debian11。 编译需要用到go环境,部分包要求1.16以上,这里简单写一下安装方法: wget https://go.dev/dl/go1.18.2.linux-amd64.tar.gz rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.2.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin go version 下载官方编译程序xcaddy: wget https://github.com/caddyserver/xcaddy/releases/download/v0.3.0/xcaddy_0.3.0_linux_amd64.deb dpkg -i xcaddy_0.3.0_linux_amd64.deb 看到如下信息说明安装成功了:go version go1.18.2 linux/amd64 准备编译模块的清单 这里我准备编译通过CloudFlare和DNSPod的DNS验证SSL证书的模块进去,对应的模块地址为: github.com/caddy-dns/cloudflare github.com/caddy-dns/dnspod 开始编译 xcaddy build \ --with github.com/caddy-dns/cloudflare \ --with github.com/caddy-dns/dnspod 冲杯咖啡的功夫就编译好了,会提示如下信息: 2022/05/17 11:27:31 [INFO] exec (timeout=0s): /usr/local/go/bin/go […]
配置caddy服务端
wget https://www.liujason.com/wp-content/uploads/caddy_v2.5.1_cf_dnspod -O /usr/bin/caddy chmod +x /usr/bin/caddy mkdir /etc/caddy/ echo ' 【这里换成你的域名】 { tls { dns cloudflare 【CF你的token】 resolvers 1.1.1.1 } reverse_proxy https://【源站IP】 { # 这里是用的443回源,你也可以用http,然后下面的transport http部分就可以删了 transport http { tls tls_insecure_skip_verify # 源站用的是自签名的证书,所以跳过验证 } # 给回源header添加host header_up Host 【回源域名,可以和上面的域名一样】 header_up X-Forwarded-Host 【同上】 # 你也可以添加其他参数 # 其中X-Forwarded-For是默认添加的,所以源站是能知道访问用户的实际IP的 } } ' > /etc/caddy/Caddyfile
前端运行caddy进行测试
caddy run -config /etc/caddy/Caddyfile
注意查看控制台的信息,其中下面这一段就是在用dns来验证域名所有权并颁发证书了
2022/05/17 09:52:46.020 INFO tls.issuance.acme.acme_client trying to solve challenge {"identifier": "proxy-test.liujason.com", "challenge_type": "dns-01", "ca": "https://acme-v02.api.letsencrypt.org/directory"} 2022/05/17 09:52:54.451 INFO tls.issuance.acme.acme_client validations succeeded; finalizing order {"order": "https://acme-v02.api.letsencrypt.org/acme/order/546979846/89414145326"} 2022/05/17 09:52:55.919 INFO tls.issuance.acme.acme_client successfully downloaded available certificate chains{"count": 2, "first_url": "https://acme-v02.api.letsencrypt.org/acme/cert/04cd7d6a8d31a5310128fbedb2bcabb3c668"} 2022/05/17 09:52:55.919 INFO tls.obtain certificate obtained successfully {"identifier": "proxy-test.liujason.com"}
后端运行caddy并开机启动
后端运行:caddy start -config /etc/caddy/Caddyfile
设置服务并开机启动:
echo '[Unit] Description=CaddyServer After=network.target remote-fs.target nss-lookup.target [Service] Type=simple ExecStart=/usr/bin/caddycaddy start -config /etc/caddy/Caddyfile ExecStop=kill -9 $(pidof caddy) ExecReload=kill -9 $(pidof caddy) && /usr/bin/caddy start -config /etc/caddy/Caddyfile [Install] WantedBy=multi-user.target' > /lib/systemd/system/caddy.service systemctl enable caddy