使用Caddy+Cloudflare模块自动给泛解析二级域名提供SSL支持

1.获得CloudFlare ApiToken

首先需要在cloudflare中添加一个支持域名dns操作的API Token,这里不做过多阐述。

2.设置caddy的服务变量

mkdir -p /etc/systemd/system/caddy.service.d

新建env.conf文件

[Service]
Environment="CLOUDFLARE_API_TOKEN={YOURTOKEN}"sh

设置好服务变量后会要求重启服务。

systemctl daemon-reload

2.安装cloudflare模块

链接:https://caddyserver.com/docs/modules/dns.providers.cloudflare

需要注意的是,由于模块被打包到caddy中,我们只能替换caddy,而不是像apache那样插件化的引入模块,但是由于其是Golang开发打包成的二进制文件,运行性能很优秀。

从这里下载带有模块的caddy文件:https://caddyserver.com/download

下载成功后设置权限并检查版本并最终替换原文件

chmod +x caddy    #设置权限
./caddy version    #验证文件,这里应该会得到正确的caddy版本
mv /usr/bin/caddy /usr/bin/caddy.bak    #备份旧的caddy文件
cp ./caddy /usr/bin/caddy    #复制新文件到bin目录
chmod +x /usr/bin/caddy    #设置权限

验证cloudflare模块是否已经包含

caddy list-modules | grep -i cloudflare
dns.providers.cloudflare    #正确显示

最终重启服务(查看状态)

sudo systemctl daemon-reload
sudo systemctl restart caddy
sudo systemctl status caddy    #可选

3.Caddyfile配置

    tls [email protected] {
        # 使用 cloudflare 插件,引用环境变量中的 token
        dns cloudflare {env.CLOUDFLARE_API_TOKEN}
    }    

验证Caddyfile语法

caddy validate --config /etc/caddy/Caddyfile

正确的结果应该会看到Valid configuration

4.可能遇到的问题

文件权限问题,如果caddy没有目录的权限会出现无法启动服务的问题。

需要使用chown -R caddy:caddy /path/to/project来设置权限。

同时还需要注意后端程序的运行权限,以php-fpm为例:chown -R www-data:www-data /path/to/project

需要注意的是它们需要统一用户组,设置方法参考:https://towait.com/blog/2639/

Post Comment