3CX 线路 TLS 和 SRTP 说明

前言

3CX 对认证的线路提供商支持 TLS 认证和 SRTP,这些线路通过了 3CX 引擎的测试兼容性。这并不说明 3CX 认证的线路都支持 TLS 和 SRTP,因为它们的线路实现方式并不相同。

TLS

限制

  • 3CX 只对注册方式的线路支持 TLS,基于 IP 的线路不支持。
  • 不支持相互验证,3CX 在每次 TLS 握手中都是 UAC。
  • 不支持通配符证书。证书必须完整匹配 FQDN。
  • 线路必须使用 FQDN,3CX 不支持通过 IP 地址使用 TLS。如果线路提供商有使用代理地址,那么代理地址也必须是 FQDN。

TLS 如何工作

线路的配置

想为您的 SIP 线路开启 TLS 需要一定的步骤和指导。下面的步骤会假设您已经配置了基于注册的线路。

3CX 认证的线路有对应的教程如何开启 TLS,具体的配置文档请查看:https://www.3cx.com/partners/sip-trunks/

首先我们需要将 SIP Trunk 线路设置里选项中的传输协议改成 TLS。

接着会出现一个可以上传证书的新选项。你需要上传对应线路供应商的 root 根证书。如果那是自签名的证书,那你就需要上传自签名证书。通常你可以在线路供应商的文档里下载证书,也可以直接向它们询问。

如果线路供应商没有为 TLS 设置 NAPRT/SRV 记录,你需要手动将端口设置成对应的 TLS 端口(默认是 5061)。反之可以把端口设置为“自动发现”。

点击 OK 保存设置。

背后的原理

假设你已经正确完成上面步骤(也许你的线路需要额外的一些步骤),线路就算配置完成了。那么将发生什么?

  • PBX 会为 TLS 记录执行 DNS 查询,如文档中描述。之后会建立目标。
  • PBX 会尝试向目标 IP 建立 TCP 连接。
  • 假设成功建立 TCP 连接,PBX 会作为 UAC(user agent client)发起 TLS 握手,并发送一个 Client Hello 消息。
  • 线路那边将会发 Server hello 消息以及其他信息,其中将包含证书链和证书 任意 SAN(subject alternate name) 的 common name。
  • PBX 将会尝试用 3CX 里配置的域名去匹配 common name。
  • 同时也会用前面上传的根证书去验证证书链。
  • 如果所有确认都通过,一个加密的注册请求会被发送到线路供应商。
  • 假设注册成功,后续 PBX 和线路的所有通信数据都会基于建立的 TLS 连接。

线路和 PBX 直接的 TLS 握手会发送更多数据,但上述步骤基本涵盖了 TLS 握手的基本流程。如果 TLS 流程中断,那么 PBX 在下一次尝试注册之前,会重复上述流程。

Troubleshooting

  • PBX 发送 TLS 必须开启 PBX 的安全 SIP/TLS 选项,并确保证书和私钥是正确填入的。设置在 PBX 选项的安全 -> 安全 SIP。该选项默认是开启的,但如果 PBX 不发送 TLS 请求这里也必须确认是否开启。
  • 如果 TLS 握手失败,确认在安全 -> 防黑客入侵中的SSL/SecureSIP传输和密码选项。该选项默认开启并禁用过时的 TLS 版本和加密来提供安全性。虽然不推荐关闭该选项,但也许这回帮助你了解为何 TLS 会握手失败。
  • 在一些情况下 Server Hello 可能会忽略中间证书(intermediate certificate),所以你需要将其添加到证书中再上传到 PBX。
  • 确保线路供应商满足上述所有需求。

SRTP

SRTP 简介

3CX 提供了单独使用 SRTP 或与 TLS 一起使用的能力。它适用于所有类型的线路(需要线路支持),也可以同时支持域名和 IP 地址的方式。SRTP 用于加密音频,并在两个终端的每次呼叫都需要协商。它不会对 SIP 消息加密,所以大多数时候为了安全性会搭配 TLS 一起使用。并不是所有线路都支持 SRTP,所以开启前请先像线路提供商确认。

选项说明

3CX 设计了 3 个 SRTP 选项来适配大部分线路。

已禁用

该选项会禁用 SRTP,呼叫永远不会被协商为 SRTP。

已启用

该选项会开启 SRTP,PBX 可以同时与呼入和呼出的电话协商为 SRTP,但也保留了协商为不加密的 RTP 的能力,以防万一。对于出局的呼叫来说,PBX 会同时提供加密(SRTP)和非加密的选项。由线路供应商来决定选择哪一种。对于入站呼叫来说 PBX 会同时接收加密和非加密的 RTP。如果线路供应商同时提供两个选项,PBX 会尝试选择加密的音频。

强制执行

该选项也会开启 SRTP,但会强制让中继只提供和接收 SRTP 请求。对于出站的呼叫,PBX 只会提供 SRTP 选项给线路供应商。如果线路那侧拒接,呼叫失败。对于入站呼叫 PBX 只会接收 SRTP 的选项。如果没有 SRTP 选项呼叫失败。

强制执行” 一般用于线路供应商不支持同时提供加密和非加密的音频,同时用户想确保音频被加密的情况。

步骤

开启 SRTP 非常简单,并且你可以根据每个中继配置。你只需要:

  • 编辑 SIP 中继 -> 选项,找到 SRTP 模式
  • 选择你想要的选项,并点击 OK 保存配置。

下一通电话就会根据你的选择被协商为 SRTP。