• Welcome to LiuJason's Blog!

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

Linux笔记 Jason 4 months ago (05-17) 31 Views 0 Comments QR code of this page
文章目录[隐藏]

前言

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

使用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 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

This article is under CC BY-NC-SA 4.0 license.
Please quote the original link:https://www.liujason.com/article/1211.html
Like (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址