TLS & SRTP

Sep. 27th, 2016 11:39 pm
mr_welk: (Default)
[personal profile] mr_welk
Шифруем сигнализацию астериска с помощью TLS и голосовой поток с помощью SRTP
Elastix 4.0 + Yealink T21P-E2

настройки:

1 перешить телефон на прошивку с поддержкой SRTP
2 генерим ключи:
openssl genrsa -out key.pem 2048 — создаем закрытый ключ длиной в 2048 бит
openssl req -new -key key.pem -out request.pem — создаем запрос на сертификат на основании имеющегося закрытого ключа,
(указываем ip или DNS при запросе Common Name)
openssl x509 -req -days 3650 -in request.pem -signkey key.pem -out certificate.pem — подписываем запрос и выпускаем сертификат с использованием ранее сгенерированного закрытого ключа.
Создаем директорию /etc/asterisk/key/
и копируем в нее certificate.pem и key.pem. Открываем для редактирования файл key.pem и копируем содержимое файла сертификата certificate.pem в него, то есть в key.pem будет и сертификат и закрытый ключ

3. редактируем sip.conf (в случае Elastix sip_general_custom.conf ):

allowguest=no  ; ну это понятно
language=ru   ;  это тоже понятно
tlsenable = yes  ; включаем TLS
tlsbindaddr = 0.0.0.0:5061 ; слушаем порт 5061 со всех адресов (надо ограничить своей сетью, если астериск внутри, например: 192.168.1.0/24:5061 )
tlscertfile = /etc/asterisk/keys/key.pem  ; путь к файлу сертификата и ключа
tlscafile = /etc/asterisk/keys/ca.crt ; путь к файлу сертификата центра сертификации (он же у нас сертификат сервера, переименовываем certificate.pem в ca.crt)
tlsclientmethod = tlsv1  ;  протокол подключения через TLS
tlscipher=ALL  ;  алгоритм шифрования, можно выбрать какой-то конкретный, например DES-CBC3-SHA
encryption=yes  ;  включение SRTP
tlsdontverifyserver=yes  ;   не проверять сертификат сервера со стороны клиента (не все телефоны поддерживают проверку)

дописываем в /etc/hosts dns имя и/или IP-адрес который вводили в сертификате в качестве Common Name если его там нет

после редактирования не забываем рестартануть астериск
service asterisk restart

4 проверяем что астериск слушает порт 5061
lsof -i -n -P | grep asterisk

5 пробуем подключиться
openssl s_client -host 127.0.0.1 -port 5061

если выдает содержимое сертификата, всё ОК

6 в свойствах экстеншена на астериске выбираем порт 5061 и имя протокола TLS
там же  Encryption = YES(SRTP Only)

или в sip.conf (sip_additional.conf) дописываем к экстеншену:

[1000]
...
port=5061
transport=tls
encryption=yes
...

7 в настройках телефона (Yealink T21 E2)
настраиваем аккаунт, выбираем порт 5061 и TLS
в расширенных настройках аккаунта включаем encryption(SRTP) (если пункта нет, значит перешиваем прошивкой с американского сайта)
далее "Безопасность - доверенные сертификаты" загружаем туда наш key.pem
опция "Принимать только доверенные сертификаты" на "включено"

после регистрации телефона смотрим в консоли астериска
sip show peer 1000

должны присутствовать строчки:

...
Prim.Transp. : TLS
Allowed.Trsp : TLS
Reg. Contact : sip:1000@192.168.1.14:11885;transport=TLS   (порт будет любой)
Encryption   : Yes
...

всё, шифрование работает, для проверки можно снять дамп wireshark'ом и убедиться что SIP запросы и пакеты нечитаемые


Ссылки:

прошивки yealink с поддержкой srtp
ещё ссылки:
From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

mr_welk: (Default)
mr_welk

February 2017

S M T W T F S
   1234
567891011
12 13141516 1718
19202122232425
262728    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 23rd, 2017 06:03 pm
Powered by Dreamwidth Studios