260911.Let’s Encrypt.https泛域名-通配符证书.90天多域名证书.部署指引

先确认 CA 是谁:( ZeroSSL / Let’s Encrypt)

执行:

1
acme.sh --list

以及:

1
cat ~/.acme.sh/account.conf | grep -E 'CA|DEFAULT_ACME'

如果你看到:

1
https://acme.zerossl.com/v2/DV90

那你当前使用的是 ZeroSSL。

如果是:

1
https://acme-v02.api.letsencrypt.org/directory

就是 Let’s Encrypt。

我更建议你直接切换 Let’s Encrypt 测试

如果你现在用的是 ZeroSSL,可以直接:

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

然后重新申请。

你的 DNS 验证方式继续使用原来的方式即可,例如:

1
2
3
4
acme.sh --issue \
-d iot-agent.cn \
--ecc \
--dns <你的DNS插件>

如果你原来使用的是 DNS API,例如阿里云、Cloudflare、腾讯云等,把 <你的DNS插件> 换回你原来的参数。

如果你想强制重新申请

可以加:

1
--force

成功日志

1
2
3
4
5
6
[Wed Sep 30 12:51:03 PM CST 2026] Your cert is in: /home/ubuntu/.acme.sh/iot-agent.cn_ecc/iot-agent.cn.cer
[Wed Sep 30 12:51:03 PM CST 2026] Your cert key is in: /home/ubuntu/.acme.sh/iot-agent.cn_ecc/iot-agent.cn.key
[Wed Sep 30 12:51:03 PM CST 2026] The intermediate CA cert is in: /home/ubuntu/.acme.sh/iot-agent.cn_ecc/ca.cer
[Wed Sep 30 12:51:03 PM CST 2026] And the full-chain cert is in: /home/ubuntu/.acme.sh/iot-agent.cn_ecc/fullchain.cer
[Wed Sep 30 12:51:04 PM CST 2026] ARI suggestedWindow: 2026-11-28T06:36:34Z to 2026-11-30T01:47:24Z
[Wed Sep 30 12:51:04 PM CST 2026] Next renewal time picked from ARI window: 2026-11-29T14:38:28Z

部署流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Ubuntu
↓
acme.sh
↓
腾讯云 DNS API
↓
自动创建 _acme-challenge TXT
↓
Let's Encrypt 验证
↓
生成泛域名证书
↓
Nginx
↓
以后自动续期

acme.sh部署

1
2
3
4
curl https://get.acme.sh | sh -s email=2226311013@qq.com

并创建 一个 shell 的 alias,
例如 .bashrc,方便你的使用: alias acme.sh=~/.acme.sh/acme.sh

90天证书脚本

  • 推荐机构:Let’s Encrypt 是免费通配符证书最广泛使用的签发机构。ZeroSSL 也提供90天免费通配符证书。
  • 通配符同样仅支持 DNS-01验证
  • 要申请 Let’s Encrypt 90天泛域名证书(*.example.com),必须使用 DNS-01 验证,HTTP验证无法签发泛域名证书

Let’s Encrypt

  • 获取密钥
  • 前往腾讯云控制台的 访问管理 (CAM) 页面,
  • 创建并获取你的 SecretId 和 SecretKey。
1
2
3
腾讯云 DNSPod配置:
export Tencent_SecretId="xxxx"
export Tencent_SecretKey="xxxx"

1. 申请泛域名证书

假设域名:

1
iot-agent.cn

申请泛域名证书:

1
2
3
4
acme.sh --force --issue \
-d iot-agent.cn \
--dns dns_tencent \
--keylength ec-256

执行后会自动:

1
2
3
4
5
6
7
8
新增 TXT:
_acme-challenge.iot-agent.cn

等待解析生效

向 Let's Encrypt 发起验证

签发证书

成功后会看到:

1
2
Your cert is in:
~/.acme.sh/iot-agent.cn_ecc/

申请泛域名证书:-d "*.iot-agent.cn"

1
2
3
4
acme.sh --force --issue \
-d '*.iot-agent.cn' \
--dns dns_tencent \
--keylength ec-256

2. 查看证书

1
acme.sh --list

例如:

1
2
Main_Domain  KeyLength
iot-agent.cn ec-256

3. 安装到 Nginx

创建目录:

1
mkdir -p /etc/nginx/ssl

安装证书:

1
2
3
4
5
6
acme.sh --install-cert \
-d iot-agent.cn \
--ecc \
--key-file /etc/nginx/ssl/private.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "systemctl reload nginx"

说明:

1
2
private.key     私钥
fullchain.cer 完整证书链

以后续期成功会自动覆盖并执行:

1
systemctl reload nginx

4. Nginx 配置

1
2
3
4
5
6
7
8
9
10
11
12
server {
listen 443 ssl http2;

server_name *.iot-agent.cn iot-agent.cn;

ssl_certificate /etc/nginx/ssl/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/private.key;

location / {
proxy_pass http://127.0.0.1:8080;
}
}

检查:

1
nginx -t

重载:

1
systemctl reload nginx

5. 测试续期

Let’s Encrypt 证书有效期 90 天,acme.sh 默认会自动续期。

手动测试:

1
2
3
4
acme.sh --renew \
-d iot-agent.cn \
--ecc \
--force

查看定时任务:

1
crontab -l

一般会看到:

1
0 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh"

6. 工业项目服务器推荐命令

如果是你的工业数据平台正式环境,推荐直接使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
export Tencent_SecretId="你的SecretId"
export Tencent_SecretKey="你的SecretKey"

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

acme.sh --issue \
-d iot-agent.cn \
-d '*.iot-agent.cn' \
--dns dns_tencent \
--keylength ec-256

acme.sh --install-cert \
-d iot-agent.cn \
--ecc \
--key-file /etc/nginx/ssl/private.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "systemctl reload nginx"

这样即可实现:

  • 泛域名证书(*.iot-agent.cn)
  • 90天自动续期
  • 腾讯云 DNS 自动验证
  • Nginx 自动更新证书
  • ECDSA P-256(性能更好,适合高并发 Web/API 服务)
归档 GitHub