转译自:Kevin Attard Compagno,3CX 合作伙伴沟通经理

关于如何正确配置 SSL 证书文件的背景信息。

我们经常会看到关于 SSL 证书问题的报错咨询——通常提示您的证书不被信任。

在大多数情况下,问题的根本原因是证书文件中仅包含服务器的证书。

 

保管好您的证书

收到证书文件时,您将获得一个公钥证书文件。

如果您自己生成了 CSR(证书签名请求),则私钥文件您已掌握;否则,证书提供方也会提供给您私钥。

私钥文件以以下格式开始和结束:

—–BEGIN PRIVATE KEY—–
…(私钥内容)…
—–END PRIVATE KEY—–

此文件或包含私钥的任何文件 绝不可与任何人共享或上传到任何地方,只能配置在需要保护的服务器上。

任何合法的工具或系统 都不会要求提供私钥信息

 

SSL 证书工作原理

当客户端尝试与服务器建立 SSL 会话时,服务器证书必须通过信任链进行验证。流程如下:

  1. 客户端接收到服务器的公钥证书(通常称为 Leaf Certificate)以及一组中间证书。

  2. 客户端检查 Leaf Certificate,确认它是由上一级中间证书签发的。

  3. 上一级证书又由更上一级的证书签发……直到最终由 Root CA(根证书)签发。

  4. 客户端在自身的系统证书库中查找该根证书(Windows、macOS、iOS、Android 内置)。

  5. 如果客户端找到根证书,则信任链有效。

  6. 客户端向服务器发送一段加密数据,服务器能解密该数据,则证明其拥有私钥,并确实拥有 Leaf 证书。

 

为什么证书可能显示“不受信任”

服务器仅提供 Leaf Certificate,但客户端可能无法获取所有中间证书。如果缺少中间证书,客户端无法验证信任链,连接就会显示“不受信任”。

 

解决方法

服务器必须同时提供中间证书和 Leaf Certificate。为此,请确保部署到服务器的证书文件不仅包含 Leaf 证书,还包含中间证书。

使用文本编辑器调整 PEM 文件,格式如下:

—–BEGIN CERTIFICATE—–
[您的域名/服务器(Leaf)证书]
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
[中间 CA 证书]
—–END CERTIFICATE—–

如果需要,还可以添加更多中间证书以完成信任链。

 

Linux 文件权限

保存证书文件到正确位置后,请确保权限设置正确:

sudo chown phonesystem:phonesystem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/*.pem
sudo chmod 640 /var/lib/3cxpbx/Bin/nginx/conf/Instance1/*.pem

 

中间证书在哪里?

证书提供方通常会提供所需的中间证书文件,可直接“放入”系统中使用。如果必须重新生成,可以使用一些在线工具,但 切勿上传私钥文件

 

关于根证书的说明

  • 大多数管理员会将根证书添加到 PEM 文件末尾以方便管理,但请注意:

    • 通常没有必要;客户端操作系统中已经预装了根证书

    • 如果客户端未预装根证书,即使服务器发送根证书也不会被信任

    • 每次 SSL 握手发送根证书会增加 1–2 KB 数据,但无实际功能提升

 

参与互动

关注我们的互动频道,及时获取最新动态。