使用acme.sh通过cloudflare续期域名证书

📘 教程 · 01-25

在当今互联网环境中,SSL/TLS 证书是保障网站安全的必备工具。Let's Encrypt 提供了免费的 SSL/TLS 证书,而 acme.sh 是一个轻量级的工具,可以帮助我们轻松申请和管理这些证书。本文将详细介绍如何使用 acme.sh 通过 Cloudflare DNS 验证实现域名证书的申请和自动续期。

什么是 acme.sh?

acme.sh 是一个基于 Shell 脚本的 ACME 协议客户端,专为自动化证书管理而设计。它支持多种 DNS 提供商(包括 Cloudflare),并可以轻松集成到现有的服务器环境中。

准备工作

在开始之前,请确保:

你拥有一个域名,并且该域名已通过 Cloudflare 管理。

你有一台运行 Linux 的服务器(如 Ubuntu 或 CentOS)。

你已获取 Cloudflare 的 API Token。

安装 acme.sh

首先,我们需要在服务器上安装 acme.sh。

安装命令:

curl https://get.acme.sh | sh
source ~/.bashrc

安装完成后,acme.sh 会自动创建一个 Cron 任务,用于检查证书的续期。

获取 Global API Key

在 Cloudflare 个人资料页面 (Profile Page) 的 API Tokens 部分获取你的 全局 API 密钥 (Global API Key):

  • 点击 "View"(查看)全局 API 密钥;
  • 验证 Cloudflare 密码;
  • 密钥将会显示出来。

全局 API 密钥 是一个 32 个字符的十六进制字符串,你需要通过以下方式提供给 acme.sh:

export CF_Key="******************"
export CF_Email="[email protected]"

申请证书

使用以下命令为你的域名申请证书。如果需要泛域名证书(通配符证书),可以使用 *.example.com。

申请单域名证书:

acme.sh --issue --dns dns_cf -d example.com

申请泛域名证书:

acme.sh --issue --dns dns_cf -d example.com -d *.example.com

acme.sh 会自动完成 DNS 验证,并生成证书文件。

证书文件的位置

证书文件默认存储在 ~/.acme.sh/example.com/ 目录下。以下是主要文件:

  • example.com.cer: 证书文件。
  • example.com.key: 私钥文件。
  • fullchain.cer: 完整的证书链文件(包含中间证书)。

安装证书

将证书文件复制到 Web 服务器的配置目录中,以便使用。

示例:将证书复制到 Nginx 目录

acme.sh --install-cert -d example.com \
  --key-file       /etc/nginx/ssl/example.com.key \
  --fullchain-file /etc/nginx/ssl/fullchain.cer \
  --reloadcmd     "systemctl reload nginx"

参数说明:

  • --key-file: 指定私钥文件的输出路径。
  • --fullchain-file: 指定完整证书链文件的输出路径。
  • --reloadcmd: 指定证书更新后执行的命令(如重启 Web 服务器)。

自动续期

acme.sh 默认会自动续期证书,无需额外配置。它会每天检查证书的有效期,并在到期前自动续期。

手动测试续期:

acme.sh --renew -d example.com --force

验证证书

你可以使用以下命令验证证书是否已正确安装:

查看证书内容:

openssl x509 -in /etc/nginx/ssl/fullchain.cer -text -noout

检查证书有效期:

openssl x509 -in /etc/nginx/ssl/fullchain.cer -enddate -noout

常见问题

  1. 证书文件是隐藏的?
    证书文件默认存储在 ~/.acme.sh/ 目录下,这是一个隐藏文件夹。可以使用 ls -la ~/.acme.sh 查看。
  2. 如何删除证书?
    如果需要删除某个域名的证书,可以使用以下命令:
acme.sh --remove -d example.com
  1. 如何更改默认存储路径?
    可以在申请证书时使用 --home 参数指定存储路径:
acme.sh --issue --dns dns_cf -d example.com --home /opt/acme

总结

通过 acme.shCloudflare DNS 验证,我们可以轻松实现域名证书的申请和自动续期。这种方法不仅简单高效,还完全免费。无论是单域名证书还是泛域名证书,acme.sh 都能完美支持。

Linux
Theme Jasmine by Kent Liao