Вы здесь

Поддержка SRTP в Asterisk

Останавливаем Астериск
CLI> core stop now

Скачиваем SRTP модуль отсюда
wget http://sourceforge.net/projects/srtp/files/srtp/1.4.4/srtp-1.4.4.tgz
(ВНИМАНИЕ! здесь ссылка указана для примера, текущая версия модуля может быть другой!)
Распаковываем его:
tar -xzf srtp-1.4.4.tgz
Правим файл srtp/test/rtpw_test.sh
меняем RTPW=rtpw на RTPW=./rtpw
./configure CFLAGS=-fPIC --prefix=/usr 
make
make runtest
make install

И пересобираем астериск Внимание! При персборке астериска добавить в конфигурацию --with-ssl --with-crypto --with-srtp



Настройка TLS + SRTP на Asterisk.

Настройку с нуля писать не буду ибо статей море, и мои тоже есть. Расскажу как же сделать сертификаты и включить шифрование.
Итак на астере надо сделать Certificate Authority.


mkdir /etc/cert
cd /etc/cert/
root@server-sip1:/etc/cert# openssl genrsa -des3 -out ca.key 4096

Generating RSA private key, 4096 bit long modulus
.......................++
...............................++
e is 65537 (0x10001)
Enter pass phrase for ca.key:
Verifying - Enter pass phrase for ca.key:
root@server-sip1:/etc/cert#
root@server-sip1:/etc/cert#
root@server-sip1:/etc/cert# openssl req -new -x509 -days 365 -key ca.key -out ca.crt
Enter pass phrase for ca.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:MOSCOW
Locality Name (eg, city) []:MOSCOW
Organization Name (eg, company) [Internet Widgits Pty Ltd]:YOURCOMPANY
Organizational Unit Name (eg, section) []:VoIP
Common Name (eg, YOUR name) []:YUORCOMPANY CA
Email Address []:INFO@YOURCOMPANY.RU
root@server-sip1:/etc/cert#
root@server-sip1:/etc/cert#
root@server-sip1:/etc/cert# ls
ca.crt  ca.key
root@server-sip1:/etc/cert#



Создание и подпись сертификата сервера и для телефонов — описываю для сервера, а для телефона процедуру повторить.



root@server-sip1:/etc/cert# openssl genrsa -out key-server.pem 1024
Generating RSA private key, 1024 bit long modulus
.....++++++
...++++++
e is 65537 (0x10001)
root@server-sip1:/etc/cert# openssl req -new -key key-server.pem -out req-server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:MOSCOW
Locality Name (eg, city) []:MOSCOW
Organization Name (eg, company) [Internet Widgits Pty Ltd]:YOURCOMPANY
Organizational Unit Name (eg, section) []:VoIP
Common Name (eg, YOUR name) []:server
Email Address []:info@yourcompany.ru
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
root@server-sip1:/etc/cert#
root@server-sip1:/etc/cert#
root@server-sip1:/etc/cert#
root@server-sip1:/etc/cert# openssl x509 -req -days 365 -in req-server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out cert-server.crt
Signature ok
subject=/C=RU/ST=MOSCOW/L=MOSCOW/O=Yourcompany/OU=VoIP/CN=server/emailAddress=info@yourcompany.ru
Getting CA Private Key
Enter pass phrase for ca.key:
root@server-sip1:/etc/cert#



Подготовка сертификата для Астериска.
Структура файла для астера должна выглядеть следующим образом — вначале файл сертификата следующего вида:

-----BEGIN CERTIFICATE-----
MIIDvDCCAyWgAwIBAgIJAPMabsMiJJQPMA0GCSqGSIb3DQEBBQUAMIGbMQswCQYD
[...]
CfITDxcJBZfeXIPZP52+8FSMlm5985uMvao+emlIUGk11rY61Amxr387grDvgOaI
-----END CERTIFICATE-----



Потом сразу файл ключа:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCqRw0jpQFn+f+lnDZiZzCRca9ojgu2brO+Q56jnqorvCIlYFC0
[...]
FT65O46u6Vmp1gPbNklOEg7TtZUtfacPY2PyeP4KoHaG
-----END RSA PRIVATE KEY-----



Скомпоновать можно через cat:

root@server-sip1:/etc/asterisk/cert# cat /etc/cert/key.pem > /etc/asterisk/cert/asterisk.pem
root@server-sip1:/etc/asterisk/cert# cat /etc/cert/cert-server.crt >> /etc/asterisk/cert/asterisk.pem



Теперь прописываем в файле sip.conf (или sip_general_custom.conf если это Elastix или FreePBX)

tcpenable=yes
tcpbindaddr=0.0.0.0
tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/cert/asterisk.pem
tlscafile=/etc/cert/ca.crt



Когда все готово нужно на конкретном extension включить TLS и SRTP.


Материал взят отсюда