在实际环境中,Proxmox Backup Server(PBS)往往部署在内网环境,无法直接被公网访问。为了方便远程管理和使用,可以通过反向代理(如 Nginx、Caddy、Traefik 等)将内网 PBS 暴露到公网,并使用自定义域名进行访问。
在 Proxmox VE(PVE)中添加 PBS 存储时,可能会遇到 证书指纹验证失败 的问题。本文记录了相关原因和解决方案。
问题背景
在 PVE Web 界面添加 PBS 时,需要填写以下参数:
- ID:存储标识符
- Server:PBS 的访问地址(域名或 IP,带端口)
- Username / Password:PBS 的登录凭据
- Datastore:PBS 中配置的存储库
- Fingerprint:PBS TLS 证书的 SHA-256 指纹
如果 PBS 运行在内网,但 PVE 通过反向代理域名(公网 443 端口)进行访问,那么 Fingerprint 验证可能会失败。错误信息大致如下:
create storage failed: error fetching datastores - fingerprint not verified, abort! (500)
问题原因
PVE 在连接 PBS 时会校验证书指纹,防止中间人攻击。
- 直连 PBS 内网地址时,返回的是 PBS 自身的证书(通常是自签发的)。
- 通过反向代理 + 域名访问时,返回的是反向代理的证书(通常是 Let’s Encrypt 或其他 CA 签发的)。
由于返回的证书不同,Fingerprint 不一致,导致验证失败。
解决方案
方法一:使用反向代理证书的 Fingerprint ✅
既然 PVE 通过反向代理访问 PBS,那么就需要使用 反向代理证书的 SHA-256 指纹。
操作步骤:
- 在浏览器中访问 PBS 域名(如
https://example.com:443)。 - 查看证书 → 获取 SHA-256 Fingerprint (Certificate)。
- 在 PVE 添加 PBS 存储时,将该指纹填入 Fingerprint 栏。
这样 PVE 与 PBS 之间的连接会通过反向代理证书验证,验证即可通过。
方法二:透传 PBS 证书
在反向代理中使用 TCP/stream 模式,让 TLS 握手直连 PBS,不由代理终止。这样返回的证书就是 PBS 原始证书,Fingerprint 与 PBS 保持一致。
适用场景:
- 需要完全保留 PBS 原生证书
- 反向代理只做四层转发,不做 TLS 终止
方法三:在 PBS 上直接部署公网证书
如果 PBS 能直接申请公网证书(例如 Let’s Encrypt),可在 PBS 上配置与域名匹配的证书。这样 Fingerprint 既来自 PBS 自身,又能与域名一致,避免反向代理引起的不一致问题。
总结
在 PVE 中添加 PBS 存储时,Fingerprint 验证失败的根本原因在于 TLS 证书不一致:
- 直连内网 PBS → 使用 PBS 证书指纹
- 通过反向代理域名访问 → 使用反向代理证书指纹
- 需要一致性 → 采用透传或直接在 PBS 部署公网证书
对于大多数场景,最简单可靠的做法是直接使用反向代理的证书指纹,这样可以兼顾安全性与便利性。