转译自:Kevin Attard Compagno,3CX 合作伙伴沟通经理
关于如何正确配置 SSL 证书文件的背景信息。
我们经常会看到关于 SSL 证书问题的报错咨询——通常提示您的证书不被信任。
在大多数情况下,问题的根本原因是证书文件中仅包含服务器的证书。
保管好您的证书
收到证书文件时,您将获得一个公钥证书文件。
如果您自己生成了 CSR(证书签名请求),则私钥文件您已掌握;否则,证书提供方也会提供给您私钥。
私钥文件以以下格式开始和结束:
…(私钥内容)…
—–END PRIVATE KEY—–
此文件或包含私钥的任何文件 绝不可与任何人共享或上传到任何地方,只能配置在需要保护的服务器上。
任何合法的工具或系统 都不会要求提供私钥信息。
SSL 证书工作原理
当客户端尝试与服务器建立 SSL 会话时,服务器证书必须通过信任链进行验证。流程如下:
-
客户端接收到服务器的公钥证书(通常称为 Leaf Certificate)以及一组中间证书。
-
客户端检查 Leaf Certificate,确认它是由上一级中间证书签发的。
-
上一级证书又由更上一级的证书签发……直到最终由 Root CA(根证书)签发。
-
客户端在自身的系统证书库中查找该根证书(Windows、macOS、iOS、Android 内置)。
-
如果客户端找到根证书,则信任链有效。
-
客户端向服务器发送一段加密数据,服务器能解密该数据,则证明其拥有私钥,并确实拥有 Leaf 证书。
为什么证书可能显示“不受信任”
服务器仅提供 Leaf Certificate,但客户端可能无法获取所有中间证书。如果缺少中间证书,客户端无法验证信任链,连接就会显示“不受信任”。
解决方法
服务器必须同时提供中间证书和 Leaf Certificate。为此,请确保部署到服务器的证书文件不仅包含 Leaf 证书,还包含中间证书。
使用文本编辑器调整 PEM 文件,格式如下:
[您的域名/服务器(Leaf)证书]
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
[中间 CA 证书]
—–END CERTIFICATE—–
如果需要,还可以添加更多中间证书以完成信任链。
Linux 文件权限
保存证书文件到正确位置后,请确保权限设置正确:
sudo chmod 640 /var/lib/3cxpbx/Bin/nginx/conf/Instance1/*.pem
中间证书在哪里?
证书提供方通常会提供所需的中间证书文件,可直接“放入”系统中使用。如果必须重新生成,可以使用一些在线工具,但 切勿上传私钥文件。
关于根证书的说明
-
大多数管理员会将根证书添加到 PEM 文件末尾以方便管理,但请注意:
-
通常没有必要;客户端操作系统中已经预装了根证书
-
如果客户端未预装根证书,即使服务器发送根证书也不会被信任
-
每次 SSL 握手发送根证书会增加 1–2 KB 数据,但无实际功能提升
-
参与互动
关注我们的互动频道,及时获取最新动态。



