Browsed by
Tag: OpenSSL

安全问题

安全问题

OpenSSL 最近发布了新的版本用于修复若干严重的安全问题,而 miniSIPServer 是采用 OpenSSL 的库提供 “SIP over TLS”特性,因此我们也相应将 miniSIPServer 升级到最新的版本,即 V40 (20230221),该版本采用最新的 OpenSSL 库。

如果您在 VoIP 网络中部署了 “SIP over TLS”,我们强烈建议您将 miniSIPServer 升级到最新的版本。

改进”基于 TLS 的 SIP”

改进”基于 TLS 的 SIP”

最近有些客户向我们报告了一个导致miniSIPServer崩溃的问题,所有这些客户都部署了“基于TLS的SIP”,所有的崩溃报告都显示是SSL/TLS加密库内部崩溃。基于这些信息,我们更新了miniSIPServer,在新版本中做了以下一些关键修改:

(1)SSL库升级到最新的版本;

(2)默认将只保留TLSv1.2加密方式,SSLv2、SSLv3、TLSv1以及TLSv1.1都被禁止。在我们调查问题的过程中,我们发现有些黑客企图利用SSLv3的缺陷骇入miniSIPServer,出于安全防护的考虑,我们全部移除这些有隐患的加密方式。未来我们会考虑加入更多更安全的加密方式,比如TLSv1.3。目前如果要部署“基于TLS的SIP”,必须确保SIP终端或者电话也支持TLSv1.2加密方式。

另一方面,我们也更新了“基于TLS的SIP”文档。在文档中新增了一些简单的示例,演示使用openSSL创建自签名的数字证书等文件。

V31最终版

V31最终版

我们发布了V31最终版本,也就是说我们未来的工作将集中于V32版本,这将是我们下一个LTS版本,取代发布已久的V24版本。

实际上,V31版本包含了很多重要特性。由于V31版本是V32版本的基线版本,因此我们仍然会在这个版本上持续更新和维护数月时间。请参考下面的章节了解几个关键更新的细节。

工具链更新

主要指Windows平台的工具链更新。

V31版本升级了几个重要工具。首先是VC++升级到VC2010,因此MSS将采用VC2010的运行库。VC2010比之前的VC2008要强大一些,另外在处理manifest问题时要好得多。

基础的SSL库从OpenSSL迁移到LibreSSL库。当然,在Linux平台,MSS目前仍然使用OpenSSL库,未来可能会统一到LibreSSL库。LibreSSL提供了官方的windows库,我们认为LibreSSL优化得比OpenSSL要好很多。如果部署了“SIP over TLS”,这次库替换会比以前版本更稳定、更安全。

SIP协议栈更新

最近我们和几位客户配合处理一些与IMS网络互联互通的问题。我们遇到了几个奇怪、老旧的SIP呼叫流程,并通过优化V31来适配这些需求。

首先是支持“18x 带/不带 SDP”流程。“18X”可以是180,也可以是183,因此您可以看到流程存在多种可能性,例如“180带SDP”、“180不带SDP”、“183带SDP”以及“183不带SDP”等。同时这些消息的顺序也是有差异的, 有些场景中我们先收到180,另一些场景中又先收到183消息。在多数场景中,这些消息实际用于播放不同的回铃音,因此对这些流程的支持,不仅仅涉及修改SIP模块,MSS内部的媒体连接处理实际上也相应作出了优化。

另一个关键点是对SIP-UPDATE消息的支持。某些IMS网络不通过18x消息来携带回铃音信息,它们转而使用SIP-UPDATE消息。我们也发现某些设备采用“SIP-UPDATE不带SDP信息”来保持对话的激活状态。这些处理非常有趣,我们希望在另一篇blog中比较深入仔细地讨论与此有关的流程。不管怎样,V31版本专门为此进行更新,支持了部分SIP-UPDATE功能流程。我们并没有完整支持这个消息的所有功能,同时MSS本身也不会主动发起SIP-UPDATE流程。如果MSS希望更改媒体,目前仍然是采用reINVITE消息及其处理过程。

在V31版本中,MSS也支持“tel”号码格式。在传统的软交换网络,软交换设备和PSTN网络互通时,有可能将这样的号码格式传递给MSS,我们不是很理解为什么这些软交换设备不将其转换成VoIP域的SIP-URL格式。现在V31支持对方发送这类号码格式,同样,MSS自身永远不会发出这类号码格式。