Caddy通过DNS验证域名所有权并自动颁发SSL证书(CloudFlare或DNSPod)

文章目录[隐藏]

前言

懒人直接看下面的跟着做就行了,想要自己编译的可以看这个

使用xcaddy编译含指定模块的Caddy二进制文件

文章目录[隐藏] 前言 教程 测试是否生效 前言 最近在折腾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 //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


This article is under CC BY-NC-SA 4.0 license.
Please quote the original link:https://www.liujason.com/article/1211.html
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy