侧边栏壁纸
  • 累计撰写 10 篇文章
  • 累计收到 17 条评论

acme.sh 使用 DNSPod 验证实现泛域名 SSL 证书申请

mayh
2025-05-26 / 0 评论 / 1 阅读 / 正在检测是否收录...

使用 acme.sh 设置 DNSPod 进行域名验证并申请 SSL 证书,需要配置 DNSPod 的 API 密钥,以便自动添加和删除 DNS 解析记录。以下是详细步骤:


一、获取 DNSPod API 密钥

  1. 登录 DNSPod 控制台
    访问 DNSPod 官网,登录你的账号。
  2. 创建 API 密钥

    • 进入 用户中心安全设置API 密钥
    • 点击 创建密钥,记录生成的 ID(如 12345)和 Token(如 abcdef1234567890)。

二、配置 acme.sh 使用 DNSPod API

  1. 设置环境变量
    在终端中运行以下命令,替换 DP_IdDP_Key 为你的 DNSPod API 密钥:

    export DP_Id="Your_DNSPod_API_ID"
    export DP_Key="Your_DNSPod_API_Token"
    • 这些变量会临时存储在终端会话中,若需永久保存,可将它们添加到 ~/.bashrc~/.zshrc 文件末尾。
  2. 生成证书
    执行以下命令申请证书(以通配符证书为例):

    acme.sh --issue --dns dns_dp -d example.com -d *.example.com
    • --dns dns_dp:指定使用 DNSPod 的 DNS 验证。
    • -d example.com:主域名。
    • -d *.example.com:通配符子域名(可选)。

三、证书安装与自动续期

  1. 安装证书到指定目录
    证书生成后,默认保存在 ~/.acme.sh/example.com/。使用以下命令将证书复制到目标路径(如 Nginx):

    acme.sh --install-cert -d example.com \
    --cert-file /etc/nginx/ssl/example.com/cert.pem \
    --key-file /etc/nginx/ssl/example.com/key.pem \
    --fullchain-file /etc/nginx/ssl/example.com/fullchain.pem \
    --reloadcmd "systemctl reload nginx"
    • --reloadcmd:证书更新后自动执行的命令(如重启 Nginx)。
  2. 自动续期
    acme.sh 会自动创建定时任务(Cron Job),无需手动操作。续期时会复用已配置的 DP_IdDP_Key

四、验证与常见问题

  1. 验证 DNS 记录
    执行命令后,acme.sh 会自动在 DNSPod 中添加一条 _acme-challenge.example.com 的 TXT 记录。申请成功后,该记录会被自动清理。
  2. 权限问题

    • 确保 API 密钥有 修改 DNS 解析 的权限。
    • 如果域名不在 DNSPod 中托管,需先将域名解析迁移到 DNSPod。
  3. 调试命令
    若遇到问题,添加 --debug 参数查看详细日志:

    acme.sh --issue --dns dns_dp -d example.com --debug

五、完整示例

# 设置 DNSPod API 密钥
export DP_Id="12345"
export DP_Key="abcdef1234567890"

# 申请证书(主域名 + 通配符)
acme.sh --issue --dns dns_dp -d example.com -d *.example.com

# 安装证书到 Nginx
acme.sh --install-cert -d example.com \
--key-file       /etc/nginx/ssl/example.com/key.pem \
--fullchain-file /etc/nginx/ssl/example.com/fullchain.pem \
--reloadcmd     "systemctl reload nginx"

通过以上步骤,你可以利用 acme.sh 和 DNSPod 的 API 快速申请并管理 SSL 证书,支持自动续期,适合生产环境使用。

0

评论 (0)

取消