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 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.