Asterisk TLS+SRTP c подписанными сертификатами (заметки)
Почему не работает Linphone и многие другие клиенты SIP и постоянно вылазит ошибка в дебагах Asterisk .....са not found. ..... asterisk tcptls.c:673 handle_tcptls_connection: FILE * open failed!
http://developer-android.unlimited-translate.org/training/articles/security-ssl.html#MissingCa
https://issues.asterisk.org/jira/browse/ASTERISK-17727
После прочтения двух данных ссылок пришла к выводу что стоит попробовать объединить все сертификаты в один pem файл. (см. ридми к патчу) Особенности работы android наводят на мысль что клиенту доходят не все сертификаты. Особенно если между вашим сертификатом и СА есть еще промежуточные серверы сертификации. Это подвердилось описанием бага на сайте Asterisk. Кстати патч я не ставила.
Настройка TLS
1. Создаем каталог где у нас будут храниться сертификаты и делаем запрос подставляя свои данные.
openssl req -new -newkey rsa:2048 -nodes -keyout asterisk.key -subj /C=RU/ST=/L=KIEV/O=Organization/OU=asterisk/CN=example.com/emailAddress=admin@example.com/ -out asterisk.csr
2. Идем получать подписанный сертификат.
Есть два варианта бесплатных - на один год www.startssl.com;
и на три года - https://buy.wosign.com/freessl.html
В примере рассмотрим работу с трех годичным сертификатом. С учетом того что у китайцев и верификация полегче будет.
Главное при переходе по ссылке, нажать на зеленую кнопку - а дальше уже все на более менее на родном буржуйском языке.
В течении часа после верификации, вы получите архив с сертификатами на все случаи жизни примерно такого содержимого:
for Apache.zip
for IIS.zip
for Nginx.zip
for Other Server.zip
Я воспользовалась сертификатами "for Other Server". Выгружаем сертификаты в каталог откуда их будет видеть Asterisk и переименовываем файлы как будет удобно с ними работать в дальнейшем.
Объединяем файл ключа и сертификат, плюс сертификаты центров сертификации.
cat asterisk.key > asterisk.pem
cat asterisk.crt >> asterisk.pem
cat 3_issuer.crt >> asterisk.pem
cat 2_cross.crt >> asterisk.pem
cat 1_root.crt >> asterisk.pem
3. Настройка Asterisk.
Об этом есть масса статей, включая родное WIKI, Множество форумов. Почти везде я встречала так же генерацию сертификатов для клиентов, но мне она не понабилась. Во первых в мобильных приложениях нет возможности выбрать клиентский сертификат, а десктопные вполне хорошо себя чувствуют при ассиметричном алгоритме криптографии.
Кратко о настройках - вносим следующие изменения в SIP.conf или если у вас ELASTIX SIP_GENERAL_CUSTOM.conf
tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscapath=/etc/pki/tls/cert
tlsclientmethod=tlsv1
tlscipher=ALL
Перезапускаем Asterisk и не забываем включать для нужных клиентов транспорт TLS и поддержку шифрования SRTP
Комментарии
Почему-то при sip reload выдает ошибку SSL Error asterisk.pem
Видимо что-то я делаю не так при экспорте в файл .pem
не могли бы вы сказать что именно туда экспортировали и зачем делали пункт 1.
Серты с https://buy.wosign.com/freessl.html получены, взял папку "for Other Server", как вы и говорили.
Пункт 1 это генерация запроса на сертификат и закрытого ключа, запрос отправляется выдающему центру сертификации.
По поводу ошибки не скажу. Логи надо проверять.