acme.sh生成免费90天的SSL泛域名证书

使用 acme.sh 生成免费 90 天的 SSL 泛域名证书

acms.sh 是 Github 上开源的一款 SSL 证书申请工具,该工具安装配置完成后可帮我们申请免费 SSL 证书,并通过定时任务实现证书自动续期,理论上配置一次终生使用,官方有提供了中文文档可自行查阅.

下面是关于使用 acme.sh 生成免费 90 天 SSL 泛域名证书的详细步骤:

1. 安装 acme.sh

acme.sh 是一个纯 Shell 脚本的 ACME 协议客户端,支持从 Let’s Encrypt 等提供商申请证书.

安装命令:

curl https://get.acme.sh | sh

或者

wget -O -  https://get.acme.sh | sh

安装完成后,可以通过执行以下命令来加载 acme.sh 的路径:

source ~/.bashrc

2. 申请免费 SSL 泛域名证书

申请 SSL 泛域名证书的关键是通过 DNS 验证来确保你对域名的控制权.Let’s Encrypt 提供了免费的 90 天有效期的证书.

2.1. 选择 DNS API

acme.sh 支持多种 DNS API,例如 Cloudflare、阿里云、DNSPod 等,你需要选择适合你的域名提供商.

vim account.conf

以下是一些常用 DNS API 的示例:

Cloudflare API:

export CF_Key="你的Cloudflare API Key"
export CF_Email="你的Cloudflare账户邮箱"

阿里云 DNS API:

export Ali_Key="你的阿里云AccessKey ID"
export Ali_Secret="你的阿里云AccessKey Secret"

DNSPod API:

export DP_Id="你的DNSPod API ID"
export DP_Key="你的DNSPod API Key"

2.2. 阿里云获取 DNS API

acme提供的泛域名证书只能通过dns的形式来做验证,因此我们需要进入域名解析控制台(你可以在此处找到你的域名解析提供商)创建API ID 和 API Key.

我这里以阿里云为例,登录成功后,去到阿里云的RAM访问控制面板来创建用户.

• 创建完用户之后,点击添加权限按钮

• 勾选RAM的访问控制权限(需要对添加/删除dns记录)

• 复制AccessKey ID和AccessKey Secret下来,保存好.

acme提供的泛域名证书只能通过dns的形式来做验证,因此我们需要进入域名解析控制台(你可以在此处找到你的域名解析提供商)创建API ID 和 API Key.

2.3. 申请泛域名证书,并指定 DNS 提供商的命令
申请泛域名证书时,你需要使用 –dns 参数指定 DNS 验证方式.

以 Cloudflare 为例,命令如下:

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

-d example.com 代表主域名,-d *.example.com 代表泛域名.

• 阿里云:

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

• DNSPod:

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

2.4. 强制使用 Let’s Encrypt 签发证书
如果想指定 Let’s Encrypt 签发,可以加上 –server 参数:

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

也可以默认使用Let’s Encrypt

acme.sh --set-default-ca --server letsencrypt

3. 安装证书

申请成功后,你可以安装或使用这些证书.安装命令根据实际情况可能会有所不同,以下是常见的几种方式:

3.1. 安装到 Nginx:

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

3.2. 安装到 Apache:

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

4. 自动续期

acme.sh 会自动续期证书,无需手动干预.你可以通过执行以下命令来检查或强制续期:

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

5. 停止续签某域名的话,手动执行 然后删除证书目录

./acme.sh --remove -d example.com

6. 卸载 acme.sh(如果需要)

如果需要卸载 acme.sh,可以使用以下命令:

acme.sh --uninstall

7. 总结

通过 acme.sh,你可以轻松生成免费的 90 天 SSL 泛域名证书,并自动处理续期问题.只需要配置好你的 DNS API,申请和安装证书的过程非常简洁快速.这种方法非常适合需要为多个子域名申请 SSL 证书的情况.