【freeswitch】TLS+SRTP部署加密的voip环境
2021-03-30 本文已影响0人
安安爸Chris
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