转译自: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)
  1. 用于证书自动更新的端口转发

您需要配置您的防火墙或边缘路由器来:

  • 将所有流量(针对 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 最新的资讯与技术信息,同时非常欢迎您在我们的媒体平台进行留言。