bg-tutorials

如何在 Plesk 上安装 ACME SSL 证书

如果您在 Plesk 上管理网站,就没有理由再手动处理证书了。通过正确的设置,您可以使用带有外部账户绑定 (EAB) 的 ACME 协议自动签发、更新和安装 SSL 证书。

Plesk ACME SSL

本指南将向你展示如何使用ACME.sh 在 Plesk(基于 Linux)上安装 ACME SSL 证书,ACME.sh 是一个轻量级 ACME 客户端,可与 Plesk 顺利配合。

如果您使用的是共享主机,可能无法使用这种方法。大多数共享环境不允许 root 访问或自定义脚本。本指南适用于 VPS 和专用服务器,在这些服务器上,您可以控制主机堆栈。


开始之前

在进入步骤之前,请确保您已准备好以下内容:

  • 装有Plesk Obsidian的服务器或 VPS
  • 通过 SSH 访问服务器。root 或具有 sudo 权限的用户
  • 通过 A 或 AAAA 记录指向服务器的实时域
  • 80 端口开放并可公开访问(HTTP-01 验证所需的端口)
  • SSL 提供商提供的 EAB 证书(EAB KID 和 EAB HMAC 密钥)

要使用的 ACME 端点:

  • Sectigo: https://acme.sectigo.com/v2/DV
  • DigiCert: https://acme.digicert.com/v2/acme

步骤 1:在 Plesk 中检查网站的文档根目录

您需要提供网站根目录的路径,以便ACME.sh正确放置验证文件。

  1. 登录 Plesk
  2. 转至网站和域名 > yourdomain.com > 托管设置
  3. 复制文档根值。它看起来像/var/www/vhosts/yourdomain.com/httpdocs
  4. 请随身携带这条路径,在后面的步骤中会用到它。

第 2 步:启用 SSH 访问(如需要)

如果您的托管计划没有启用 SSH:

  1. 转至网站和域名 > yourdomain.com > 虚拟主机访问
  2. 在通过 SSH 访问服务器下,选择/bin/bash或/usr/bin/bash
  3. 保存设置

如果您使用的是托管/共享主机,请联系支持部门申请 SSH 访问权限。


第 3 步:通过 SSH 连接到服务器

从本地终端连接服务器:

ssh [email protected]

或者,如果使用的是非根用户:

ssh [email protected]

步骤 4:安装 ACME.sh

运行官方安装程序:

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

然后检查版本,确认已安装:

acme.sh --version

如果失败,请确保已安装curl 和git 。如有需要,您可以使用--force 重新运行安装。


步骤 5:在 EAB 注册账户

ACME 注册是一次性设置,可将服务器与证书颁发机构链接起来,以便自动验证和处理未来的证书请求。

该命令使用唯一的 EAB 凭据向 SSL 提供商(Sectigo 或 DigiCert)注册 ACME 帐户。

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

以下是每个部分的含义:

  • acme.sh --register-account – 开始 ACME 账户注册
  • --server – 您的提供商的 ACME URL(Sectigo 或 DigiCert)
  • --eab-kid – 提供商提供的 EAB 密钥 ID
  • --eab-hmac-key – 您的 EAB HMAC 密钥(长字符串)
  • --accountemail – 您的 ACME 账户联系电子邮件

该命令必须使用您的真实 EAB 详情和电子邮件地址进行定制。请勿原样复制。

如果不输入占位符(如YOUR_EAB_KID ),命令会因身份验证错误而失败。

一旦运行成功,你的服务器现在就有权向该提供商申请 SSL 证书;除非你更换提供商或证书,否则今后无需再次注册。


步骤 6:准备 HTTP 验证

创建 ACME 挑战目录:

mkdir -p /var/www/vhosts/yourdomain.com/httpdocs/.well-known/acme-challenge

然后测试它是否能正常工作:

echo "ok" > /var/www/vhosts/yourdomain.com/httpdocs/.well-known/acme-challenge/testfile
curl -I http://yourdomain.com/.well-known/acme-challenge/testfile

您应该看到 HTTP/1.1 200 OK. 如果没有,请检查防火墙规则、80 端口访问或文档根路径。


步骤 7:绕过 ACME 路径的强制 HTTPS

如果您的网站将所有流量重定向到 HTTPS,就会破坏 HTTP-01 验证,除非您允许挑战文件夹绕过它。

如果您使用 Apache(Plesk Linux 上的默认设置)

编辑文档根目录下的.htaccess文件,并将此添加到顶部:

RewriteEngine On
RewriteRule ^.well-known/acme-challenge/ - [L]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

如果您使用的是 Nginx(或 Nginx 是 Apache 的前置设备)

Apache.htaccess在这里帮不上忙,因为 Nginx 会首先处理重定向。相反,您需要在 Plesk 中添加一个自定义 Nginx 指令:

  1. 转到网站和域 > yourdomain.com > Apache 和 Nginx 设置
  2. 找到标有附加 Nginx 指令的字段
  3. 将此粘贴进去:
location ^~ /.well-known/acme-challenge/ {
root /var/www/vhosts/yourdomain.com/httpdocs;
allow all;
try_files $uri =404;
}

这将告诉 Nginx 直接提供挑战路径,而不是 HTTPS 重定向或代理到 Apache。保存并应用更改。


步骤 8:颁发证书

现在您可以申请证书了。下面是一个使用 Sectigo 和两个域名变体的示例:

acme.sh --issue \
  -d yourdomain.com \
  -d www.yourdomain.com \
  -w /var/www/vhosts/yourdomain.com/httpdocs \
  --server https://acme.sectigo.com/v2/DV

您可以根据需要添加-d 标志。证书签发后,ACME.sh 会将所有内容保存到以下文件夹:/root/.acme.sh/yourdomain.com/

Plesk 需要两个文件:

  • yourdomain.com.key:这是您的私人密钥
  • fullchain.cer: 这是您的证书文件,包含完整的证书链(您的证书 + CA 链)

这些文件将由您上传或在 CLI 中使用,以便将证书安装到 Plesk 中。


第 9 步:通过用户界面将证书导入 Plesk

  1. 转至网站和域名 > yourdomain.com > SSL/TLS 证书
  2. 单击添加 SSL/TLS 证书
  3. 上传证书 (选择fullchain.cer)和私钥(选择yourdomain.com.key)。 点击保存
  4. 返回 “托管设置”,在SSL/TLS 支持部分选择该证书
  5. 单击确定 或应用

您的域名现在使用第三方 ACME SSL 证书。


第 10 步通过 Plesk CLI 自动导入(可选,适用于 Cron)

要在今后续费时自动申请证书,请使用 CLI:

plesk bin certificate -c "acme-yourdomain" \
  -domain yourdomain.com \
  -cert-file /root/.acme.sh/yourdomain.com/fullchain.cer \
  -key-file  /root/.acme.sh/yourdomain.com/yourdomain.com.key

plesk bin domain -u yourdomain.com -ssl true -certificate-name "acme-yourdomain"
plesk bin httpdmng --reconfigure-domain yourdomain.com

如果 plesk 命令无法识别,请尝试完整路径:/usr/sbin/plesk bin …


第 11 步:使用部署脚本自动续订

ACME.sh 会在证书到期前 30 天自动更新证书。但我们会在更新后添加一个钩子,将它们自动应用到 Plesk。

1.创建部署脚本

nano /usr/local/bin/plesk-acme-deploy.sh

粘贴以下内容:

#!/usr/bin/env bash
set -euo pipefail

DOMAIN="yourdomain.com"
CERT_DIR="/root/.acme.sh/${DOMAIN}"
CERT_NAME="acme-${DOMAIN}"

CERT_FILE="${CERT_DIR}/fullchain.cer"
KEY_FILE="${CERT_DIR}/${DOMAIN}.key"

/usr/sbin/plesk bin certificate -c "${CERT_NAME}" \
  -domain "${DOMAIN}" \
  -cert-file "${CERT_FILE}" \
  -key-file  "${KEY_FILE}"

/usr/sbin/plesk bin domain -u "${DOMAIN}" -ssl true -certificate-name "${CERT_NAME}"
/usr/sbin/plesk bin httpdmng --reconfigure-domain "${DOMAIN}"

echo "Plesk deploy complete for ${DOMAIN}"

2.保存并使其可执行

chmod +x /usr/local/bin/plesk-acme-deploy.sh

3.将其链接到 ACME.sh

acme.sh --install-cert -d yourdomain.com \
  --key-file       ~/.acme.sh/yourdomain.com/yourdomain.com.key \
  --fullchain-file ~/.acme.sh/yourdomain.com/fullchain.cer \
  --reloadcmd "/usr/local/bin/plesk-acme-deploy.sh"

从现在起,每次更新都将应用于 Plesk。


步骤 12:测试一切

访问您的网站 https://yourdomain.com。证书应有效并显示您的 CA。

要测试更新和手动部署,请运行

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

然后尾随日志:

tail -n 60 ~/.acme.sh/acme.sh.log

最后,您应该会看到更新成功和“Plesk 部署完成”。


常见问题与故障排除

即使有正确的设置,第一次尝试也不一定能顺利进行,尤其是在域名验证、重定向或文件路径方面。以下是您在签发或更新证书时可能遇到的最常见问题,以及如何快速解决这些问题。

HTTP 验证失败(404、超时或未找到测试文件)

这意味着 ACME 挑战文件没有正确送达。

  • 在Plesk > Hosting Settings 中再次检查文档根目录。
  • 确保端口 80 已打开,且未被防火墙、托管面板或云提供商阻止。
  • 如果重定向到 HTTPS,请确保如前所示,不包括/.well-known/acme-challenge/ 。

“签发过程中的 “未经授权 “或 “无效响应

ACME 服务器无法验证您的挑战,可能是由于以下原因之一:

  • 您的域名 DNS 记录尚未更新(A 或 AAAA 记录丢失或仍在传播)。
  • 测试文件无法访问、过早删除或被规则阻止。
  • 您正在使用拦截 HTTP 流量的 CDN 或 WAF(如 Cloudflare)。暂时停止代理或将 ACME 路径列入白名单。

续订后什么也没发生

证书更新了,但没有应用到 Plesk 中。

确保–reloadcmd 中的部署脚本路径正确。

运行脚本,检查脚本是否可执行:

chmod +x /usr/local/bin/plesk-acme-deploy.sh

查看 ACME 日志:

tail -n 60 ~/.acme.sh/acme.sh.log

错误会在这里显示。

Plesk CLI 导入失败

你的部署脚本可能会运行,但证书并不适用。

  • 如果找不到 plesk 命令,请尝试使用完整路径:/usr/sbin/plesk
  • 仔细检查.key和.cer文件是否存在,名称是否正确。
  • 要手动强制重新配置,请运行
plesk bin httpdmng --reconfigure-domain yourdomain.com

最后条款

现在你已经在 Plesk 服务器上运行了一个简洁、全自动的 SSL 设置。从现在起,你的证书将在后台自动更新,每当你签发新证书时,脚本将立即更新 Plesk。您已经完全控制了证书的生命周期,生活变得更加轻松。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.