[Показать] Спойлер: Отключаем SELinux
0. Отключаем SELinux
В файле /etc/selinux/config строку SELINUX=enforcing приводим виду:
В файле /etc/selinux/config строку SELINUX=enforcing приводим виду:
- Код: выделить все
SELINUX=disabled
[Показать] Спойлер: Устанавливаем доступ в репозиторий EPEL
1. Устанавливаем доступ в репозиторий EPEL
- Код: выделить все
yum install http://mirror.yandex.ru/epel/7Server/x86_64/e/epel-release-7-8.noarch.rpm
yum update
systemctl reboot
[Показать] Спойлер: Установка Asterisk
2. Установка Asterisk
- Код: выделить все
cd /usr/local/src/
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13.11.2.tar.gz
tar xvfz asterisk-13.11.2.tar.gz
cd asterisk-13.11.2/contrib/scripts
./install_prereq install
./install_prereq install-unpackaged
cd ../..
./configure
make menuselect
make
make install
make samples
make config
make install-logrotate
ldconfig
systemctl enable asterisk
systemctl start asterisk
asterisk -rvvvvv
[Показать] Спойлер: Установка Node.JS HTTPS
3. Установка Node.JS HTTPS
- Код: выделить все
yum install npm
npm install express-generator -g
cd /opt
express -e site
cd site && npm install
npm install https
cd bin
mkdir keys
cd keys
openssl genrsa -out key.pem 2048
openssl req -new -days 3600 -sha256 -key key.pem -out cert.csr
--------------------------------------------------------------------------------------------------------------------
ВНИМАНИЕ!
Обязательно ввести имя хоста,
более того asterisk должен прописан
на DNS сервере.Проверять будет веб браузер Chrome
Common Name (eg, your name or your server's hostname) []:asterisk
--------------------------------------------------------------------------------------------------------------------
openssl x509 -days 3600 -sha256 -req -in cert.csr -signkey key.pem -out cert.pem
cd ..
Корректируем строки в файле www
var http = require('https'); //Изменили
var fs = require('fs'); //Добавили
var port = normalizePort(process.env.PORT || '443'); //Изменили
var server = http.createServer(
{
cert: fs.readFileSync('/opt/site/bin/keys/cert.pem'),
key: fs.readFileSync('/opt/site/bin/keys/key.pem')
},app); //Изменили
Запускаем Node.JS HTTPS
node /opt/site/bin/www
Установка сертификат cert.pem в веб броузер Chrome
Настройки->Показать дополнительные настройки->Настроить сертификаты
Открываем вкладку "Доверенные корневые центры сертификации" и импортируем cert.pem
Обязательно перегрузить веб браузер Chrome в строке адреса набираем: https://asterisk
https засветится зелёным цветом и появиться:
Express
Welcome to Express
[Показать] Спойлер: Установка JSSIP в Node.JS HTTPS
4. Установка JSSIP в Node.JS HTTPS
- Код: выделить все
cd /opt
wget -rN https://tryit.jssip.net/
wget -rN https://tryit.jssip.net/sounds
Получили папку tryit.jssip.net
Переносим сайт tryit.jssip.net в Node.JS HTTPS
cd tryit.jssip.net
cp -r css icons images js sounds /opt/site/public
cp index.html /opt/site/views/index.ejs
cp: переписать «/opt/site/views/index.ejs»? y
Запускаем Node.JS HTTPS с демонстрацией софтового javaScript SIP клиента
node /opt/site/bin/www
В веб браузере Chrome набираем строку https://asterisk, получаем приглашение на ввод реквизитов доступа к сервису Asterisk
[Показать] Спойлер: Настройка в Asterisk WebRTC и WSS
5. Настройка в Asterisk WebRTC и WSS
- Код: выделить все
mkdir /etc/asterisk/keys
cd /usr/local/src/asterisk-13.11.2/contrib/scripts
./ast_tls_cert -C asterisk -O "IB" -d /etc/asterisk/keys
где
-C Имя хоста
-O Название организации
-d Директория куда будут скопированы ключ и сертикат
Редактируем файл /etc/asterisk/http.conf в разделе
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
tlsenable=yes
tlsbindaddr=0.0.0.0:8089
tlscertfile=/opt/site/bin/keys/cert.pem
tlsprivatekey=/opt/site/bin/keys/key.pem
asterisk -rx "core restart now"
Проверка:
nmap localhost -p 8088,8089
Starting Nmap 6.40 ( http://nmap.org ) at 2016-09-23 11:26 SAMT
Nmap scan report for localhost (127.0.0.1)
Host is up (-790s latency).
Other addresses for localhost (not scanned): 127.0.0.1
PORT STATE SERVICE
8088/tcp open radan-http
8089/tcp open unknown
[Показать] Спойлер: Регистрация пользователей SIP и WSS на Asterisk
5. Регистрация пользователей SIP и WSS на Asterisk
- Код: выделить все
Настройка rtp.conf
[general]
transport=udp,wss
stunaddr=stun.l.google.com:19302
Настройка sip.conf
[general]
realm=asterisk
;Софтовый JSSIP, находящийся в веб браузере
[800]
secret=800
host=dynamic
context=from-internal
type=friend
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
nat=force_rport,comedia
directmedia=no
disallow=all
videosupport=no
allow=alaw
dtlsenable=yes
dtlsverify=no
dtlscertfile=/etc/asterisk/keys/asterisk.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlsprivatekey=/etc/asterisk/keys/asterisk.key
tlscipher=ALL
tlsclientmethod=tlsv1
transport=sip,wss
tlsenable=yes
qualify=no
;Софтовый JSSIP, находящийся в веб браузере
[801]
secret=801
host=dynamic
context=from-internal
type=friend
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
nat=force_rport,comedia
directmedia=no
disallow=all
qualify=no
videosupport=no
allow=alaw
dtlsenable=yes
dtlsverify=no
dtlscertfile=/etc/asterisk/keys/asterisk.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlsprivatekey=/etc/asterisk/keys/asterisk.key
tlscipher=ALL
tlsclientmethod=tlsv1
transport=sip,wss
tlsenable=yes
;Софтовый телефон находящийся в OS Windows, Linux, ....
[802]
secret=802
host=dynamic
context=from-internal
type=friend
nat=force_rport,comedia
disallow=all
qualify=no
allow=alaw
transport=sip
asterisk -rx "core restart now"
[Показать] Спойлер: Настройка в Asterisk маршрутов дозвонов для пользователей SIP и WSS
5.Настройка в Asterisk маршрутов дозвонов для пользователей SIP и WSS
- Код: выделить все
Настройка extensions.conf
[from-internal]
exten => _X.,1,Wait(0.25)
same => n,Answer()
same => n,DIAL(SIP/${EXTEN})
asterisk -rx "core restart now"
[Показать] Спойлер: Реквизиты ввода для JSSIP находящегося на стороне Node.JS HTTPS
5.Реквизиты ввода для JSSIP находящегося на стороне Node.JS HTTPS
- Код: выделить все
Запускаем Node.JS HTTPS Сервер:
node /opt/site/bin/www
Запускаем веб браузер Chrome в строке адреса вводим: https://asterisk, происходит загрузка демо сайта JSSIP и вводим следующие реквизиты:
Name: 800
SIP URL: 800@asterisk
SIP password: 800
WS URL: wss://asterisk:8089/ws