asterisk1.8安装包地址:https://www.asterisk.org/downloads/asterisk/all-asterisk-versions
srtp安装包地址:http://sourceforge.net/projects/srtp/
安装过程:
首先是安装srtp,安装前确保有这些包:
yum -y install gcc gcc-c++ pkgconfig zlib-devel openssl-devel ncurses-devel
yum -y install autoconf automake libtool
开始安装(请使用该包,其他的包多数对centos没用,改了也无济于事)
1.tar zxvf srtp-1.4.4.tgz
2.cd srtp
3../configure --prefix=/usr
4.vim Makefile (这里是该包的make的一个BUG,需要手动修改)
改:CFLAGS = -fPIC -Wall -O4 -fexpensive-optimizations -funroll-loops
5.make
6.make install
7.mv /usr/lib/libsrtp.a /usr/lib64/
然后安装asterisk
1.tar zxvf asterisk-1.8.7.1.tar.gz
2.cd asterisk-1.8.7.1
3../configure --with-ssl
4.make menuconfig (检查res_srtp是否被选择上了,确保该模块加载上)
5.make
6.make install
授权证书的生成:
首先我们生成一个认证证书,好让我们导入我们要使用的软电话和注册的电脑中。
1.genrsa -des3 -out ca.key 5060
这个过程中会让我们输入一个长度大于4位小于254位的密码。记住这个密码。
生成的文件是ca.key
2.openssl req -new -x509 -days 365 -key ca.key -out ca.crt
生成证书。有效期一年,这个文件是ca.crt这个文件我们要安装在客户电脑上
生成过程中会让我们输入国家,省,市,公司等信息,请记住你输入的,如果不想记干脆就敲回车
3.在客户机器上安装这个ca.crt文件(windows上双击安装就可以)
其次是生成服务器端的文件。
1.首先建立一个目录:mkdir /etc/asterisk/key
2.openssl genrsa -out key.pem 1024
3.openssl req -new -key key.pem -out req-sip_remiphilippe_fr.csr
公钥信息
4.openssl x509 -req -days 365 -in req-sip_remiphilippe_fr.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out cert-sip_remiphilippe_fr.crt
加入所有的客户端认证信息
5.组合:
cat key.pem > asterisk.pem
cat cert-sip_remiphilippe_fr.crt >> asterisk.pem
到这里授权文件生成完了。然后将asterisk.pem,ca.crt复制进入/etc/asterisk/key目录中
客户端的安装:
将证书ca.crt安装在客户机上,双击后即可。
别急,软电话也要证书,将key.pem文件装入软电话。(这个取决于软电话,多数软电话没有该功能)
asterisk配置过程:
sip.conf文件
[general]
context=incoming
allowguest=no
alwaysauthreject=yes ;开启这个会在授权错误的情况下提示错误
allow=ulaw
allow=alaw
allow=gsm
tlsenable=yes ;开启tls验证
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem ;srtp授权文件该文件内存放的是密码相关的,授权文件的生成请参考:http://www.remiphilippe.fr/2010/05/30/sips-on-asterisk-sip-security-with-tls/
tlscafile=/etc/asterisk/keys/ca.crt ;srtp授权配置
tlscipher=ALL
tlsclientmethod=tlsv1
[007]
type=peer
defaultuser=007
secret=007
dtmfmode=rfc2833
callerid="User one"
host=dynamic ; The device must always register
canreinvite=no
nat=yes
encryption=yes ;开启加密机制
transport=tls ;这里会和软电话上的传输协议一致,多数软电话这个协议不生效,在注册时会报错,请选择有srtp的软电话,并且多数网管注册的物理电话没有此功能。
deny=0.0.0.0/0.0.0.0
permit=192.168.18.0/255.255.255.0
context=myphones
[008]
type=peer
defaultuser=008
secret=008
dtmfmode=rfc2833
callerid="User two"
host=dynamic ; The device must always register
canreinvite=no
nat=yes
encryption=yes
transport=tls
deny=0.0.0.0/0.0.0.0
permit=192.168.18.0/255.255.255.0
context=myphones
配置完成后asterisk -rvvv
>module reload
>sip reload
>core reload