Browsed by
Tag: dtls-srtp

Chrome/Firefox 用 WebRTC 向 SIP 发起呼叫

Chrome/Firefox 用 WebRTC 向 SIP 发起呼叫

新近发布的 miniSIPServer (V70 build 20250402)支持一个很有趣的特性:我们可以用浏览器(必须支持 WebRTC 技术,例如 Chrome、Firefox 等)向 miniSIPServer 发起呼叫,呼叫 SIP 域的设备(电话、网关等)。网络拓扑如下图所示:

语音媒体流采用端对端加密方式通过 DTLS-SRTP 传递,与 miniSIPServer 连通。目前仅支持语音通话,不支持视频通话。

浏览器 Web 侧采用简化版的信令(MCCP,miniSIPServer Call Control Protocol,即 miniSIPServer 呼叫控制协议)控制呼叫,并通过加密的 Websocket 连接( WSS,Websocket secure)与 miniSIPServer 对接。目前仅支持 Web 域向 SIP 域发起呼叫,不支持反向由 SIP 域向 Web 域发起呼叫。

我们在浏览器中输入以下 URL 即可从浏览器向 SIP 域发起呼叫(演示分机用户100 呼叫分机用户 101):

https://www.myvoipapp.com/miniwebphone2/lite.html?server=192.168.3.70&clr=100&pwd=100&cld=101

URL 类似命令行方式,其中各项参数说明如下:

(1)「https://www.myvoipapp.com/miniwebphone2/lite.html」是一个简单的页面,加载到浏览器后即可与指定的 miniSIPServer 服务器建立 WSS 连接,并发起呼叫。我们可以将这个页面及相关的资源都下载到本地或者本地的 Web 服务器,浏览器打开本地文件同样也可以发起呼叫。

(2)「server」指定 miniSIPServer 的地址。该 miniSIPServer 必须已经成功加载证书和密钥、并启动了 WSS 服务。miniSIPServer 默认总是采用 TCP 5062 端口启动 WSS 。

(3)「clr」发起呼叫的主叫用户号码。该号码必须是 miniSIPServer 的分机用户号码。

(4)「pwd」主叫用户用于鉴权的密码,即 miniSIPServer 分机用户的密码。miniSIPServer 用「号码+密码」对呼叫进行鉴权,只有鉴权通过的呼叫才允许接入,否则 miniSIPServer 会直接拒绝呼叫。

(5)「cld」呼叫的被叫号码,可以是本地分机号码,也可以是外呼号码。


语音流通过 DTLS-SRTP 传输,采用端对端协商和加密,miniSIPServer 无需对媒体进行额外配置。

miniSIPServer 仅需要配置证书和密钥启动 WSS 服务,接受浏览器 MCCP 呼叫消息。miniSIPServer 要求(1)证书和密钥保存在「应用数据目录」的「wrtcCert」子目录下;(2)文件必须是 PEM 格式;(3)证书保存为 server.crt 文件,密钥保存为server.key 文件。例如,在 Linux 系统中这两个文件应该如下所示:

$HOME/.minisipserver/wrtcCert/server.crt
$HOME/.minisipserver/wrtcCert/server.key

如果正常加载证书和密钥,miniSIPServer 将启动 WSS 服务并提示以下信息:

如果采用自签名证书,务必要注意在 Chrome、Firefox 等浏览器中允许加载自签名的证书。

miniSIPPhone V26.1

miniSIPPhone V26.1

最近发布了 miniSIPPhone V26.1 版本,这个版本主要包含以下关键特性或者修改:

一、支持 DTLS-SRTP

miniSIPServer 支持 DTLS-SRTP 之后,我们更新了 miniSIPPhone, 使其也可以过 DTLS-SRTP 加密传输语音流。我们在部署企业通信网络时(尤其是涉及在外部公共云系统部署)完全实现信令、媒体高强度的加密,确保企业通信安全。

在 miniSIPServer 和 miniSIPPhone 我们统一对 DTLS-SRTP 做出以下限制:

(1)DTLS 必须是 DTLSv1.2 及以上版本,不支持低于 v1.2 版本的握手协商。

(2)加密套件固定为 SRTP_AES128_CM_SHA1_80。规范中定义了若干个加密套件,我们采用最高强度的加密,不支持协商其他加密套件。

(3)fingerprint 总是采用 SHA-256 编码,不支持 SHA-1 或者其他的编码方式。

二、简化账号配置

新版本在配置 SIP 账号时,不再需要单独的配置来指定端口,如下图所示:

SIP 账号配置窗体

通常情况下SIP 服务器采用标准端口开放服务,用户确实没有必要了解协议规定的端口信息(我们访问互联网时也很少指定或者了解 80,443等端口),也没有必要去配置端口信息。因此我们删除了「服务器端口」配置项。

但是也存在 SIP 服务器采用非标准端口的情况(例如 miniSIPServer 云采用 6060 端口提供 SIP-TLS 接入,而不是标准定义的 5061 接口),新版本我们可以在「服务器地址」中一起指定地址和端口信息,例如:

15000.s2.minisipserver.com:6060

如果服务器提供的是 IPv6 地址和非标准端口,我们也可以采用以下示例的方式进行设置:

[fe80::5a11:22ff:fe74:8198]:6060