转译自:Kevin Attard Compagno,3CX 合作伙伴沟通经理在单个局域网 (LAN) 中部署多个 3CX MCU 和 AI 转写引擎。
当运行多个需要面向公众的 FQDN(完全限定域名)和 SSL 证书的服务实例时,管理这些证书可能是一个挑战。
为了提供有意义的例子来说明可以实现和不能实现的目标,我们将使用一个常见场景作为起点,然后扩展讨论变量如何影响您的 SSL 证书管理策略。
常见示例设置
为了更好地解释,我们将考虑在同一局域网内有 3 台机器的设置:
- 3CX 电话系统 – IP 地址 192.168.0.10
- 3CX 本地部署 MCU – IP 地址 192.168.0.20
- 3CX 本地部署 AI – IP 地址 192.168.0.30
3CX 提供的 FQDN
标准的 3CX 部署使用自定义 ACME 客户端自动配置和续订 Let’s Encrypt 证书。此方法将证书直接绑定到 3CX 安装和 FQDN。如下所述,有 3 个要求:
1. 专用公共 IP 地址
为了使此设置正常工作,这 3 台机器中的每一台都需要一个专用的公共 IP 地址;请考虑此示例:
| FQDN | 系统 | LAN IP 地址 | 公共 IP 地址 |
|---|---|---|---|
| mypbx.3cx.com.cy | 3CX 电话系统 | 192.168.0.10 | 20.20.20.20 |
| mymcu.my3cx.net (auto-assigned) | 3CX 板载 MCU | 192.168.0.20 | 20.20.20.21 |
| myai.my3cx.net (auto-assigned) | 3CX 板载 AI | 192.168.0.30 | 20.20.20.22 |
2. 分割 DNS (Split DNS)
您的局域网 DNS 服务器配置必须确保:
- 在局域网内部,您的 FQDN 解析到其局域网 IP 地址
- 在局域网外部,您的 FQDN 解析到其公共 IP 地址
最简单的方法是为您的局域网机器创建 FQDN 特定的 A(或 AAAA)记录,您的本地 DNS 服务器配置如下:
- FQDN: mypbx.3cx.com.cy – 3CX 电话系统 – IP 地址 192.168.0.10
- FQDN: mymcu.my3cx.net – 3CX 板载 MCU – IP 地址 192.168.0.20
- FQDN: myai.my3cx.ne – 3CX 板载 AI – IP 地址 192.168.0.30
这些设置被称为不同的名称,包括:
- 精确 DNS 区域 (Pinpoint DNS Zones)
- 响应策略区域 (Response Policy Zone (RPZ))
- 分裂视图 DNS(Split-Horizon DNS)或 DNS 视图(Views)
- 影子区域 (Shadow Zones)
- 用于证书自动更新的端口转发
您需要配置您的防火墙或边缘路由器来:
- 将所有流量(针对 mymcu.my3cx.net)转发到 20.20.20.21:80 到 192.168.0.20:80
- 将所有流量(针对 myai.my3cx.net)转发到 20.20.20.22:80 到 192.169.0.32:80
这将允许 Let’s Encrypt 访问您的机器进行证书更新。
3CX 电话系统 (mypbx.3cx.com.cy) 不需要此端口转发,因为它利用 3CX 云基础设施来更新 3CX FQDN 证书。
注意:如果你无法为局域网内的所有 MCU 和/或 AI 机器提供独立的公网 IP 地址,那么你必须使用自定义的 FQDN(全限定域名)。
使用 DNS 自动化和 Let’s Encrypt 的自定义 FQDN
如果您在局域网中有所有三台 3CX 机器,并且它们都不能从公共互联网直接访问,则此方法是合适的。这需要在标准 3CX 配置之外进行手动设置。为了本例的目的,我们假设以下 FQDN:
- mypbx.example.com
- mymcu.example.com
- myai.example.com
和以前一样,有一些要求需要遵循,概述如下:
1. 自动化脚本
您需要在局域网中的某台机器上创建一个自动化脚本,该脚本:
- 使用 Let’s Encrypt DNS-01 challenge 机制
- 定期运行以确保您提前续订证书
- 与 Let’s Encrypt 通信以请求证书续订
- 与您的 DNS 提供商的 API 通信以创建 Let’s Encrypt 验证所需的记录
- 将下载的证书 PEM 文件和 KEY 文件保存到一个文件夹;例如:
/etc/letsencrypt/live/mymcu.example.com/fullchain.pem
/etc/letsencrypt/live/mymcu.example.com/privkey.pem
2. 证书更新脚本
接下来,您需要创建一个证书更新脚本,该脚本:
- 检查新的证书文件
- 如果找到它们,将它们复制到正确的目的地
- 删除源文件以避免每次运行时都进行无用的重复复制
以下是针对 mymcu.example.com 机器的示例脚本,您可以将其保存在 “/root/certupdate.sh” 中(这同样也能应用于 myai.example.com):
#!/bin/bash
cp /etc/letsencrypt/live/mymcu.example.com/fullchain.pem /opt/3cxwm/cert/server.crt
cp /etc/letsencrypt/live/mymcu.example.com/privkey.pem /opt/3cxwm/cert/server.key
chown www-data:www-data /opt/3cxwm/cert/server.*
chmod 600 /opt/3cxwm/cert/server.*
设置脚本的正确权限:
chmod +x /root/certupdate.sh并将其添加到您的 crontab 中运行,例如,每天早上 3 点。
自定义 FQDN – 手动证书续订
如果您受限于手动证书续订,例如因为您的 DNS 提供商没有用于自动化的 API,并且也可能是因为您正在使用通配符证书,则该过程与上面基本相同,只是您必须自己执行更改,而没有自动化的好处。
替代证书颁发机构
对于 Let’s Encrypt 以外的 CA,我们提供了关于如何选择使用哪个 CA 的一般指南,请点击此处。
参与互动
关注我们的互动频道,我们通过视频、图片、文档,包括召开技术及市场交流会议的形式,方便你了解及掌握 3CX 最新的资讯与技术信息,同时非常欢迎您在我们的媒体平台进行留言。



