帮助

通过 acme.sh 使用 Auto SSL

acme.sh 是一个没有依赖的单文件 shell 脚本,可在任何 Linux、FreeBSD 和容器中运行。它完整支持带外部账户绑定(EAB)的 ACME,因此可直接用于 Auto SSL。ISPmanager、FastPanel、cPanel 和 BitrixVM 的文章也以本指南为基础。

在哪里获取密钥

  1. 在个人中心 1host.kz/bill 打开"Auto SSL (Sectigo ACME)"服务(可在 Auto SSL 页面下单)。
  2. 点击"Configure Now"(配置)并填写域名:普通域名填入"Single Domains"(www 与不带 www 视为同一域名),通配符填入"Wildcard Domains"。
  3. 5–30 秒后,服务卡片中会显示 ACME account IDEAB MAC IDEAB MAC keyServer URL

下文中:Server URL 为 https://acme.sectigo.com/v2/DV(所有客户通用),YOUR_EAB_KID 为 EAB MAC ID,YOUR_EAB_HMAC_KEY 为 EAB MAC key。请像保管密码一样保管它们。

安装 acme.sh

以 root 身份(或有权访问网站目录并重载 Web 服务器的用户):

curl https://get.acme.sh | sh -s [email protected]
source ~/.bashrc
acme.sh --version

安装程序会将脚本放入 ~/.acme.sh/,并添加一个每天检查有效期并续期证书的 cron 任务。检查:crontab -l | grep acme.sh

使用 EAB 密钥注册账户

acme.sh --register-account --server https://acme.sectigo.com/v2/DV \
  --eab-kid YOUR_EAB_KID --eab-hmac-key YOUR_EAB_HMAC_KEY

此操作只需一次:acme.sh 将账户保存在 ~/.acme.sh/ca/acme.sectigo.com/,之后无需再提供密钥。为避免在每条命令中输入 --server,可将 Sectigo 设为默认 CA:

acme.sh --set-default-ca --server https://acme.sectigo.com/v2/DV

签发证书

通过 webroot——Web 服务器提供 /.well-known/acme-challenge/ 的网站目录:

acme.sh --issue --server https://acme.sectigo.com/v2/DV \
  -d example.kz -d www.example.kz -w /var/www/html

其他验证方式,用于替代 -w /var/www/html

  • --nginx——验证期间 acme.sh 自动临时修改 nginx 配置;
  • --apache——Apache 同理;
  • --standalone——在 80 端口启动自带服务器(期间需停止 Web 服务器)。

一条命令中的所有域名都必须在订阅中并指向该服务器。80 端口必须开放。

安装证书并重载 Web 服务器

不要直接引用 ~/.acme.sh/ 中的文件——其结构可能变化。请将证书复制到固定路径并指定重载命令;acme.sh 会记住它们,并在每次续期后重复执行:

mkdir -p /etc/ssl/example.kz
acme.sh --install-cert -d example.kz \
  --key-file       /etc/ssl/example.kz/privkey.pem \
  --fullchain-file /etc/ssl/example.kz/fullchain.pem \
  --reloadcmd      "systemctl reload nginx"

Web 服务器配置:

# nginx
ssl_certificate     /etc/ssl/example.kz/fullchain.pem;
ssl_certificate_key /etc/ssl/example.kz/privkey.pem;

# Apache(reloadcmd 为 "systemctl reload apache2" 或 "httpd")
SSLCertificateFile    /etc/ssl/example.kz/fullchain.pem
SSLCertificateKeyFile /etc/ssl/example.kz/privkey.pem

通过 DNS 获取通配符证书

对于 *.example.kz,CA 通过 TXT 记录验证域名(dns-01),因此 acme.sh 需要访问 DNS 服务商的 API。以 Cloudflare 为例(acme.sh 支持 150 多家服务商,列表见其 wiki 的 dnsapi 页面):

export CF_Token="具有区域编辑权限的令牌"
export CF_Account_ID="账户ID"
acme.sh --issue --server https://acme.sectigo.com/v2/DV --dns dns_cf \
  -d example.kz -d '*.example.kz'

凭据保存在 ~/.acme.sh/account.conf 中,续期无需您参与。如果域名的 DNS 托管在我们的 ns1/ns2.1host.kz,请联系技术支持——我们协助配置 DNS 验证。不建议在 Auto SSL 中使用手动模式(--dns 不带服务商,手动添加 TXT 记录):每次续期都需要重新修改记录。

检查与续期

查看证书列表及下次续期日期:

acme.sh --list

确认网站使用的是 Sectigo 证书:

echo | openssl s_client -connect example.kz:443 -servername example.kz 2>/dev/null \
  | openssl x509 -noout -issuer -dates

issuer 中应包含 O = Sectigo Limited。续期由每日 cron 任务完成:证书在到期前约 30 天更新,然后执行 --reloadcmd。强制续期并测试整个流程:

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

日志位于 ~/.acme.sh/acme.sh.log。只要订阅有效(续费账单在年度到期前 14 天送达),无需其他操作。如有问题,请通过个人中心联系 ONEHOST 技术支持,我们全天候回复。

如有任何疑问,请联系我们