【freeswitch】TLS+SRTP部署加密的voip环境

1. TLS

freeswitch自1.8.7版本后sofia 协议栈好像是支持了wss协议。但是一般在网络拓扑中,Opensips会作为前置的SBC来控制外部协议与SIP会话。而且opensips也天然支持tls,所以部署上可以让opensips承担起SIP over LTS的功能。

TLS默认端口5443

如何使用?

在opensips中修改一下控制脚本

  • 首先,增加模块(动态库)的引用
loadmodule "proto_tls.so"
loadmodule "tls_mgm.so"
  • 其次,增加监听端口
listen=udp:0.0.0.0:5160 as 1.2.3.4:5160
listen=tcp:0.0.0.0:5160 as 1.2.3.4:5160
listen=tls:0.0.0.0:5443 as 1.2.3.4:5443

opensips除了tls外,也支持ws和wss协议,端口分别为5066(默认端口)和8443(默认端口)

  • 最后,如果对方是注册上来的,主要往tls端口上注册即可;如果不是注册的,那么在路由呼叫时,需要指定tls端口

证书的导入

TLS需要指定证书,opensips的证书存放位置在${opensips_install_location}/etc/opensips/certs

使用了TLS后,通过wireshark抓包是看不到SIP消息的,因为包都是加密传输的,wireshark解析不了

2. SRTP

Freeswitch是支持SRTP,ZRTP,WebRTC等多种媒体加密手段的。一般和cloud call center对接,如果需要涉及媒体加密,会使用SRTP。如果使用到webrtc终端,如浏览器终端,大多为webrtc。

如何使用?

在外呼时,通过指定rtp_secure_media_inbound/rtp_secure_media_outbound来指定
注意:rtp_secure_media1.8.7版本过弃

rtp_secure_media_outbound=mandatory:AEAD_AES_128_GCM_8

true为permission, 后面的为加密算法。其中可选值为

# permission:
mandatory - Accept/Offer SAVP negotiation ONLY
optional - Accept/Offer SAVP/AVP with SAVP preferred
forbidden - More useful for inbound to deny SAVP negotiation
# DEPRECATED
false - implies forbidden
# DEPRECATED
true - implies mandatory
default - accept SAVP inbound if offered

# encryption suites:
AEAD_AES_256_GCM_8
AEAD_AES_128_GCM_8
AES_CM_256_HMAC_SHA1_80
AES_CM_192_HMAC_SHA1_80
AES_CM_128_HMAC_SHA1_80
AES_CM_256_HMAC_SHA1_32
AES_CM_192_HMAC_SHA1_32
AES_CM_128_HMAC_SHA1_32
AES_CM_128_NULL_AUTH

顺带提一下webrtc的使用,外呼时加入参数{media_webrtc=true}即可

使用样例

发送的INVITE


INVITE

收到200OK


200ok

这里协商的是INVITE里candidate 5

组网拓扑示意图

组网拓扑示意图

你可能感兴趣的:(【freeswitch】TLS+SRTP部署加密的voip环境)