bg-tutorials

如何在 Proxmox 上安装 SSL 证书

本教程将向您展示如何在 Proxmox Virtual Environment (Proxmox VE) 上安装 SSL 证书,以便 Web 界面通过受信任的 HTTPS 提供服务,而不是使用默认的自签名证书。您还会找到购买适合 Proxmox 的经济实惠 SSL 证书的最佳去处。

如果您已经生成了 CSR 代码并收到了 SSL 文件,请直接跳转到安装说明

在 Proxmox 上生成 CSR 代码

要从受信任的证书颁发机构(CA)获取 SSL 证书,您必须先生成 CSR 代码并将其发送给证书提供商。CSR 代表证书签名请求(Certificate Signing Request):这是一段编码文本,包含您的联系信息,例如域名和公司身份,以及将嵌入证书中的公钥。

您有两种选择:

  1. 使用我们的CSR 生成器自动生成 CSR。
  2. 按照我们关于如何在 Proxmox 上创建 CSR的分步教程操作。

在结账时将 CSR 提交给证书颁发机构。一旦 CA 验证了您的请求并签发了证书,请继续下面的安装步骤。

在 Proxmox 上安装 SSL 证书

在您的 CA 签署证书并通过电子邮件发送 SSL 文件后,您就可以开始安装了。Proxmox VE 会用您的自定义证书替换默认的自签名证书。您无需手动编辑 Web 服务器配置或重启 Apache/Nginx,因为 Proxmox 管理着自己的 pveproxy 服务。

开始之前

  • 准备好来自 CA 的已签名 SSL 文件。
  • 确保您的私钥受密码保护;Proxmox 不接受加密的密钥。
  • 您需要按节点应用证书。在集群中,请对每个您想要保护的节点重复这些步骤。

这些步骤适用于 Proxmox VE 7、8 以及当前的 9.x 版本系列。在这些版本中,证书安装流程是相同的。

第一步:准备安装文件

下载 CA 发送给您的 ZIP 压缩包,并在您的计算机上解压。要在 Proxmox 上激活 SSL,您正好需要两个文件:

  • fullchain.pem:您的服务器证书加上所有中间证书(不包括根证书),合并为单个 PEM 文件。
  • private-key.pem:您的 PEM 格式私钥,无密码。

根据您的 CA 不同,您可能会收到作为单独文件的根证书和中间证书,或者它们被打包在一个 .ca-bundle 文件中。对于 Proxmox,您必须将服务器证书和中间证书合并成一个 fullchain.pem 文件。打开一个纯文本编辑器,将每个证书的内容粘贴到一个文件中。

顺序很重要。完整证书链文件必须以您的服务器(叶子)证书开头,后跟中间证书。每个证书块从 —–BEGIN CERTIFICATE—– 行开始,到 —–END CERTIFICATE—– 行结束,如下所示:

-----BEGIN CERTIFICATE-----
(your server / leaf certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(intermediate certificate)
-----END CERTIFICATE-----

第二步:通过 Proxmox 图形界面上传证书

Web 界面是最简单的方法,尤其是当您只管理一个节点时:

  1. 登录到 Proxmox Web 界面。
  2. 在左侧面板中,展开 Datacenter,选择您的节点,然后转到 System → Certificates
  3. pveproxy-ssl.pem 下,点击 Upload Custom Certificate
  4. 将您的 fullchain.pem 粘贴(或上传)到 Certificate Chain 字段中,将您的 private-key.pem 粘贴到 Private Key 字段中。
  5. 点击 Upload。当系统提示重启 Web 服务时,确认操作。Proxmox 将重新加载 pveproxy 并开始提供您的新证书。

重启后,在浏览器中重新加载 Web 界面。您现在应该看到您的受信任证书,而不是默认的自签名证书。

替代方法:通过命令行安装证书

如果您更喜欢使用命令行,请通过 SSH(例如使用 scp)将您的 fullchain.pemprivate-key.pem 复制到节点,然后使用内置的 pvenode 工具。它会在安装证书和密钥之前验证两者是否匹配,并可以一步完成重启代理服务:

pvenode cert set fullchain.pem private-key.pem --force --restart

–force 参数会覆盖任何现有的自定义证书,而 –restart 会重新加载 Web 服务,使更改立即生效。

您也可以手动放置这些文件。Proxmox 会从 /etc/pve/local/pveproxy-ssl.pem 读取活动节点的证书,从 /etc/pve/local/pveproxy-ssl.key 读取其密钥(其中 /etc/pve/local 是指向当前节点目录的符号链接)。将您的文件复制到对应位置,并根据您自己的实际情况调整源路径:

cp fullchain.pem /etc/pve/local/pveproxy-ssl.pem
cp private-key.pem /etc/pve/local/pveproxy-ssl.key

然后重启 Web 界面以加载新证书:

systemctl restart pveproxy

您应该会看到一条日志消息,确认 Proxmox 现在正在使用您的新证书。

替代方法:使用 Proxmox 内置的 ACME(Let’s Encrypt)获取免费证书

Proxmox VE 内置了原生 ACME 客户端,因此您无需购买证书或运行外部工具,即可签发并自动续期免费的 Let’s Encrypt 证书。当您的节点具有公共 DNS 名称时(HTTP-01 验证方式需要从互联网访问 80 端口),或者当您可以使用受支持的 DNS 提供商进行 DNS-01 验证时,此方法非常理想。

  1. 转到 Datacenter → ACME,在 Accounts 下注册一个账户(选择 Let’s Encrypt 目录并接受条款)。ACME 账户只需在数据中心级别配置一次。
  2. 打开您的节点 → System → Certificates,在 ACME 下为该节点添加域名,并选择验证类型(HTTP 或 DNS)。
  3. 点击 Order Certificates Now。Proxmox 会完成验证挑战,安装证书,并在到期前自动续期。

测试您的 SSL 安装

安装证书后,快速检查是否存在错误和漏洞。最快的方法是在浏览器中打开 Proxmox Web 界面,确认锁形图标显示的是有效、受信任的证书,且域名和到期日期正确。

通过命令行,您可以准确读取该节点在其默认端口(8006)上提供的内容:

echo | openssl s_client -connect your-proxmox-host:8006 -servername your-proxmox-host 2>/dev/null | openssl x509 -noout -issuer -subject -dates

这将打印出实际证书的颁发者、主题和有效日期。如需完整的外部扫描,请参阅我们关于最佳 SSL Checker 的指南,以检查您的安装情况。

在哪里购买适合 Proxmox 的最佳 SSL 证书?

购买 SSL 证书时,请综合考虑验证类型、价格和客户服务。在 SSL Dragon,我们提供业内最广泛的 SSL 证书种类之一,价格极具竞争力,并提供专属支持。每张证书均由受信任的证书颁发机构签发,并完全兼容 Proxmox Virtual Environment。无论您需要经济实惠的域名验证(Domain Validation)证书,还是高级扩展验证(Extended Validation)产品,我们都能满足您的需求。

常见问题解答

Proxmox 将其 SSL 证书存储在哪里?

每个节点从 /etc/pve/local/pveproxy-ssl.pem 提供其自定义证书,并从 /etc/pve/local/pveproxy-ssl.key 提供匹配的密钥。/etc/pve/local 路径是指向该节点自身目录(位于 /etc/pve/nodes/<node>/ 下)的符号链接。如果没有自定义证书,Proxmox 会回退使用其自签名的 pve-ssl.pem

安装证书后如何重启 Proxmox Web 界面?

重启提供图形界面的代理服务:
systemctl restart pveproxy
如果您是通过图形界面上传,或运行了 pvenode cert set ... --restart,Proxmox 会自动为您重启该服务,因此您无需再执行此命令。

为什么 Proxmox 不接受我的私钥?

最常见的原因是密钥受密码保护(已加密);Proxmox 只接受未加密的 PEM 密钥。请先使用 openssl rsa -in private-key.pem -out private-key.pem 移除密码短语。同时确认密钥确实与您的证书匹配,且证书是正确的完整证书链(叶子证书在前,然后是中间证书,不包含根证书)。

Proxmox 能否自动获取免费的 Let’s Encrypt 证书?

可以。Proxmox VE 内置了 ACME 客户端。在 Datacenter → ACME 下注册一个 Let’s Encrypt 账户,在 [node] → System → Certificates 下添加您的域名和验证类型,然后申请证书。Proxmox 会安装该证书,并在到期前自动续期,无需手动上传。

我是否需要在集群中的每个节点上都安装证书?

是的。自定义证书是按节点存储的,因此您需要通过各节点自己的主机名连接到其各自的 Web 界面。对于您想通过受信任的 HTTPS 提供服务的每个节点,都要重复上传操作(或 ACME 申请流程)。

总结

在 Proxmox VE 上安装 SSL 证书,归根结底就是构建一个完整证书链 PEM 文件,通过 System → Certificates(或在命令行中使用 pvenode cert set)连同您未加密的密钥一起上传,然后让 Proxmox 重启其 pveproxy 服务。如果想要更省心的设置方式,内置的 ACME 客户端可以签发并自动续期免费的 Let’s Encrypt 证书。还没有证书?浏览我们的 SSL 证书

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

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

龙飞行的详细图像
撰写人

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