Установка WebRTC клиента на Asterisk на примере SipML5

2 августа, 2017 | от | asterisk, webrtc

Авг
02

Ссылка на скачивание SipML5
https://github.com/DoubangoTelecom/sipml5

Для того, чтобы запустить WebRTC клиент (в дальнейшем будем считать, что речь идет конкретно о SipML5), необходимо сделать несколько простых шагов
Во-первых скачать сам клиент, после чего положить его в директорию с веб-файлами, например /var/www/html.
Теперь приступим к настройке АТС

Для начала нужно убедиться, что Астериск собран с поддержкой srtp

1) Нужно поднять https соединение на веб-сервере (из-за того, что все совеременные браузеры не дают пользоваться устройствами ввода/вывода, например микрофоном для сайтов с незащищенным соединением).

Ставим openssl

yum install mod_ssl openssl

Используя OpenSSL, сгенерируем собственный сертификат. Для рабочего сервера, крайне рекомендуется использовать сертификат от доверенного центра сертификации, но если вы работаете на личном сайте или в целях тестирования - собственного сертификата вполне достаточно.
В случае, если используется не самоподписной сертификат, этот блок можно пропустить

# Генерация приватного ключа

openssl genrsa -out ca.key 1024

# Генерация запроса на сертификат CSR

openssl req -new -key ca.key -out ca.csr

# Генерация самоподписанного ключа

openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

# Перемещение полученных файлов в правильные места

mv ca.crt /etc/pki/tls/certs
mv ca.key /etc/pki/tls/private/ca.key
mv ca.csr /etc/pki/tls/private/ca.csr

Затем нам нужно обновить конфигурационный файл Apache SSL.

vi +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf

Теперь необходимо указать путь к файлам ключа и сертификата
(Пути указаны для примера с собственной генерацией)

SSLCertificateFile /etc/pki/tls/certs/ca.crt

Затем установите правильный путь к файлу сертификата.

SSLCertificateKeyFile /etc/pki/tls/private/ca.key

Сохраните файл и перезагрузите Apache.

/etc/init.d/httpd restart

Затем необходимо создать запись для VirtualHost;

vim /etc/httpd/conf/httpd.conf

SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key

Добавляем порт 443 в исключения IPtables

2) После этого необходимо настроить http сервер Астериска

vim /etc/asterisk/http.conf

Прописываем в файл
Пути к файлам сертификата соответствую путям, прописанным выше в файле /etc/httpd/conf/httpd.conf

tlsenable=yes
tlsbindaddr=0.0.0.0:8089
tlscertfile=/etc/pki/tls/certs/ca.crt
tlsprivatekey=/etc/pki/tls/private/ca.key

Далее сгенерируем ключи для шифрования голосового траффика
Переходим в директорию с исходниками Asterisk, как правило это /usr/src/asterisk-*
Далее в директорию /contrib/scripts/

И запускаем скрипт

./ast_tls_cert -C pbx.asterisk-pbx.ru -O "asterisk-pbx.ru" -d /etc/asterisk/keys

После этого необходимо добавить в настройки sip.conf в секцию general

realm=your_ip_adress
transport=udp,ws,wss

И добавить пиры. Ниже приведен пример настроек пира

[1000]
rtcp_mux=yes
host=dynamic
secret=password
context=from-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

После чего нужно перечитать конфигурацию Asterisk, выполнив из консоли комманду

core reload

3) Чтобы открыть SipML5 клиент, нужно перейти по адресу

https://you_ip_adress.com/sipml5

Далее, после перехода по ссылке "Enjoy Live Demo" откроет окно для регистрации клиента.
Заполняем поля
Display Name: - можно указать любое
Private Identity*: имя учетной записи (например 1000, из приведенного выше примера)
Public Identity*: полное имя учетной записи в формате sip:1000@your_ip_adress:5160 (sip:username@host:port)
Password: пароль данной учетной записи
Realm*: адрес сервера для подключения в формате host:port

Далее переходим на страницу Expert Mode
Здесь необходимо указать адрес для WebSocket, для этого в строке WebSocket Server URL, пишем

wss://your_ip_adres:8089/ws

В поле ICE Servers указываем пустой массив

[]

ВАЖНО! Если на Вашем сервер используются доменные имена, то во всех поля вместо your_server_ip необходимо указывать доменное имя сервера

После чего нажимаем кнопку "Login" и, если появилась надпись "Connected", можно приступать к звонкам

Оставить комментарий