在 ISPmanager 6 中使用 Auto SSL
ISPmanager 6 的内置模块只能从 Let's Encrypt 签发免费证书。可以通过 /usr/local/mgr5/etc/ispmgr.conf 中的 LetsencryptAcmeUrl 参数更改 ACME 服务器地址,但面板不支持 Sectigo 所需的外部账户绑定(EAB)密钥。因此 Auto SSL 的可行方案是:由同一服务器上的 acme.sh 签发证书,再以"现有证书"方式添加到面板。
在哪里获取密钥
- 在个人中心 1host.kz/bill 打开"Auto SSL (Sectigo ACME)"服务(可在 Auto SSL 页面下单)。
- 点击"Configure Now"(配置),在"Single Domains"中填写域名(
www与不带www视为同一域名);通配符填入"Wildcard Domains"。 - 5–30 秒后显示 ACME account ID、EAB MAC ID、EAB MAC key、Server URL。
下文中:Server URL 为 https://acme.sectigo.com/v2/DV,YOUR_EAB_KID 为 EAB MAC ID,YOUR_EAB_HMAC_KEY 为 EAB MAC key。
需要准备
- 通过 SSH 以 root 身份访问 ISPmanager 6 服务器。
- 网站已在面板中创建,域名指向服务器,80 端口开放。
- 网站所属的面板用户名(示例中为
user1)和网站根目录:ISPmanager 中通常为/var/www/user1/data/www/example.kz。确切路径请在面板中查看:"网站"→ 网站 →"根目录"。
通过 acme.sh 签发证书
以 root 身份安装 acme.sh 并注册账户(一次性):
curl https://get.acme.sh | sh -s [email protected]
source ~/.bashrc
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 --set-default-ca --server https://acme.sectigo.com/v2/DV
通过网站根目录签发证书:
acme.sh --issue -d example.kz -d www.example.kz \
-w /var/www/user1/data/www/example.kz
文件会出现在 ~/.acme.sh/example.kz_ecc/(默认使用 ECC 密钥):fullchain.cer、example.kz.key、ca.cer。关于签发方式的更多说明见通过 acme.sh 使用 Auto SSL。
将证书添加到面板
- 在 ISPmanager 中打开"SSL 证书"→"添加证书"→ 类型"现有"。
- "用户"——网站所有者(
user1)。 - "SSL 证书"——
example.kz.cer的内容(仅域名证书,PEM 格式)。 - "SSL 证书密钥"——
example.kz.key的内容。 - "SSL 证书链"——
ca.cer的内容。 - 保存。然后"网站"→ 选择网站 →"编辑"→ 启用安全连接,选择刚添加的证书,并按需启用 HTTP 到 HTTPS 的重定向。
输出文件内容以便复制:cat ~/.acme.sh/example.kz_ecc/example.kz.cer 等。面板会将自己的副本保存在 /var/www/httpd-cert/user1/。
续期后自动更新
acme.sh 会在到期前约 30 天自动续期,但面板不会知道——它保存着自己的副本。为避免每两个月手动搬运文件,请告诉 acme.sh 续期后的证书放在哪里以及如何重载 Web 服务器:
ls /var/www/httpd-cert/user1/ # 找到已添加证书的文件
acme.sh --install-cert -d example.kz \
--cert-file /var/www/httpd-cert/user1/example.kz.crt \
--key-file /var/www/httpd-cert/user1/example.kz.key \
--ca-file /var/www/httpd-cert/user1/example.kz.crtca \
--fullchain-file /var/www/httpd-cert/user1/example.kz.crt \
--reloadcmd "systemctl reload nginx; systemctl reload httpd || systemctl reload apache2"
待确认:/var/www/httpd-cert/USERNAME/ 中证书文件的确切名称(面板按 名称_编号 命名,例如 example-crt_1)——请使用 ls 中看到的名称;--fullchain-file 的路径必须与网站 nginx/Apache 配置引用的文件一致。
不修改面板文件的替代方案:每次续期后在"SSL 证书"→ 证书 →"编辑"中重新粘贴内容。如有疑问,请联系 ONEHOST 技术支持:我们为您配置自动替换。
检查与续期
通过 HTTPS 打开网站并在浏览器中查看证书:颁发者应为 Sectigo。在控制台:
echo | openssl s_client -connect example.kz:443 -servername example.kz 2>/dev/null \
| openssl x509 -noout -issuer -dates
acme.sh --list
续期由 acme.sh 的每日 cron 任务完成(crontab -l | grep acme.sh),之后执行 --reloadcmd。完整测试流程:acme.sh --renew -d example.kz --force,再运行 openssl——"notAfter"日期应有变化。面板中"现有"类型的证书标记为不自动续期——这是正常的,续期由 acme.sh 负责。Auto SSL 订阅每年通过账单续费一次;订阅有效期间,签发和续期不受限制。