Asterisk SIP TLS加密异常求助:配置正常但通话抓包显示异常流量
解决Asterisk SIP TLS配置后媒体流未加密的问题
看起来你已经搞定了SIP信令的TLS加密——毕竟sip.conf重载无异常、客户端注册和拨号计划都正常,但媒体流(RTP)还在明文传输,而且Wireshark误把部分流量识别成SKYPE,这是因为你只配置了信令加密,没搞定媒体加密(SRTP),再加上客户端可能没开启对应设置,我给你一步步梳理解决:
1. 配置Asterisk的SRTP加密
TLS仅加密SIP信令,媒体流需要依赖SRTP实现加密,你需要在sip.conf里补充以下配置:
全局生效配置(所有分机适用)
在[general]段添加:
encryption=yes srtp_enabled=yes srtp_tag_32=yes ; 兼容部分老版本Zoiper这类客户端
分机单独强制配置(可选)
如果要确保特定分机必须使用加密媒体流,在对应分机段也加上:
[1001] type=friend secret=your_password encryption=yes
配置完成后重载SIP模块:
asterisk -rx "sip reload"
2. 拨号计划强制媒体加密协商
在extensions.conf的拨号规则里,添加Set(SIPSRTP=yes)来确保呼叫时强制触发SRTP协商:
[internal] exten => _XXX,1,Set(SIPSRTP=yes) same => n,Dial(SIP/${EXTEN},20,r) same => n,Hangup()
3. 调整Zoiper客户端的媒体加密设置
这一步很容易被忽略,直接影响加密效果:
- 打开Zoiper的账号设置面板,找到媒体加密选项,设置为
强制SRTP或首选SRTP(别选“仅当服务器要求时”,部分客户端默认这个选项可能导致协商失败) - 确认客户端的SIP传输方式设置为
TLS,而非UDP或TCP
4. 验证与排障
- 重新注册客户端后互拨,再用Wireshark抓包:正常情况下,媒体流会显示为
SRTP,而非明文的ITU-T G.711 PCMU,同时Wireshark也不会再误识别为SKYPE(误识别是因为明文RTP的特征被匹配到了SKYPE的流量规则) - 如果问题依旧,先检查Asterisk的SRTP模块是否加载:
若未看到asterisk -rx "core show modules like srtp"res_srtp.so,说明编译Asterisk时未启用SRTP,需要重新编译并添加--enable-srtp参数 - 查看Asterisk日志排查协商错误:
搜索tail -f /var/log/asterisk/messagesSRTP关键词,查看是否存在协商失败的提示信息
内容的提问来源于stack exchange,提问作者kantor
相关产品推荐
相关产品推荐

