前景提要
HDC调试需求开发(15万预算),能者速来!>>> 各位网友大家好: 最近在使用sipml5 sip client软件来调试 asterisk 基本功能(已经使用 X-Lite 客户端软件实现电话 呼叫 ,电话 会议 ,视频电话,单一视频源视频会议).asterisk服务器和 客户端 都在内网。asterisk服务器ip地址为:192.168.1.187; asterisk对webrtc支持配置 参考官网: https://wiki.asterisk.org/wiki/display/AST/Asterisk+WebRTC+Support
CSDN博客: http://blog.csdn.net/chengzhangbiji/article/details/40350997
1、http.conf配置
enabled = yes bindport = 8088 bindaddr = 0.0.0.0
2、rtp.conf配置
[general] rtpstart=10000 rtpend=20000 icesupport=yes stunaddr=stun.l.google.com:19302
3、生产webrtc证书,参考网站: https://wiki.asterisk.org/wiki/display/AST/Secure+Calling+Tutorial
原文中对生成webrtc证书配置如下:
mkdir /etc/asterisk/keys //asterisk服务器证书生成 ./ast_tls_cert -C pbx.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -C选项定义我们的主机- DNS名称或IP地址,是否需要修改为asterisk服务器地址,不确定 //siml5客户端证书生成 ./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone1.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -o malcolm -C选项是否修改为客户端ip地址,不太确定 -o选项是否修改为6001号码同名,也不知道 以上命令全部使用官网原命令。 将生成的 malcolm.pem and ca.crt文件拷贝到sipml5客户端目录下。
4、sip.conf配置
[general] srvlookup = yes videosupport = yes maxcallbitrate = 384 allowoverlap=no ; Disable overlap dialing support. (Default is yes) udpbindaddr = 0.0.0.0:5060 realm = 192.168.1.187 [6001] ;sipml5客户端号码 host=dynamic secret=6001 context=internal type=friend encryption=yes avpf=yes force_avp=yes icesupport=yes directmedia=no disallow=all allow=ulaw dtlsenable=yes dtlsverify=fingerprint dtlscertfile=/etc/asterisk/keys/asterisk.pem dtlscafile=/etc/asterisk/keys/ca.crt dtlssetup=actpass nat = yes transport = ws,wss [2002] ;xlite客户端号码 secret = 2002 port = 5060 type = friend host = dynamic qualify = yes nat = no context = internal canreinvite = yes fullname = cuiyj allow = h263p transport = udp 5、pjsip.conf配置
[transport-ws] type=transport protocol=ws bind=0.0.0.0 [6001] type=aor max_contacts=2 remove_existing=yes [6001] type=auth auth_type=userpass password=6001 username=6001 [6001] type=endpoint disallow=all allow=ulaw context=default auth=6001 aors=6001 media_encryption=dtls dtls_verify=fingerprint dtls_cert_file=/etc/asterisk/keys/asterisk.pem dtls_ca_file=/etc/asterisk/keys/ca.crt dtls_setup=actpass use_avpf=yes ice_support=yes media_use_received_transport=yes 6、重启asterisk服务器
systemctl stop asterisk.service
systemctl start asterisk.service 7、客户端登录 将sipml5 sip client设为6001分机 , 登录信息如下所示:
配置ok。点击“login”登录,控制台打印:
WebSocket connection from '192.168.1.154:51785' for protocol 'sip' accepted using version '13' -- Registered SIP '6001' at 192.168.1.154:51785 > Saved useragent "IM-client/OMA1.0 sipML5-v1.2016.03.04" for peer 6001 登录ok。xlite登录不在贴出。
8、电话互打
(1) 使用sipml5拨打xlite客户端 , 调试信息如下:
通话正常。
(2) 使用xlite拨打sipml5客户端 ,调试信息如下:
sipml5客户端响铃,接通之后马上断掉,其中出现错误:
DTLS failure occurred on RTP instance '0x7f462000fff8' due to reason 'missing tmp ecdh key', terminating
9、 问题分析
猜测可能是step 3,生成webrtc证书有误,所以将其修改为:
mkdir /etc/asterisk/keys //asterisk服务器证书生成 ./ast_tls_cert -C 192.168.1.187 -O "My Super Company" -d /etc/asterisk/keys //siml5客户端证书生成 ./ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C 192.168.1.154 -O "My Super Company" -d /etc/asterisk/keys -o 6001 将6001 .pem and ca.crt拷贝到sipml5客户端目录下。 重新登录,继续step 8.2 使用xlite拨打sipml5客户端,出现了同样的错误。
请教一下各位大神,问题出现在哪里呢??