Desk Phone Module for Asterisk (DPMA) SSL Certificate Expiration – FreePBX OpenSource Project – Documentation

Desk Phone Module for Asterisk (DPMA) SSL Certificate Expiration - FreePBX OpenSource Project - Documentation Сертификаты
Содержание
  1. Системные требования
  2. Проверьте перед установкой
  3. Установка АТС-коннектора
  4. Настройка FreePBX
  5. Настройка АТС-коннектора
  6. Завершение установки
  7. Affected dpma versions
  8. All asterisk based systems using d-series phones with dpma are affected, including:
  9. Asterisk based systems not covered above
  10. Dns-имя
  11. Docker
  12. Freepbx distro
  13. I. настройка во freepbx
  14. Let’s encrypt
  15. Pbxact
  16. Ssl-сертификат
  17. Stun-сервер
  18. Switchvox
  19. Thanks!
  20. Автоматизация установки
  21. Выпуск сертификата. certificate management.
  22. Драйвер chan_pjsip
  23. Драйвер chan_sip
  24. Другие интеграции
  25. Изучаем логику работы
  26. Инициализация скриптов и создание сервиса
  27. Конфигурация asterisk chan_pjsip
  28. Конфигурация asterisk chan_sip
  29. Настройка вызовов
  30. Настройка записи телефонных разговоров
  31. Настройка умной переадресации
  32. Общая настройка атс-коннектора
  33. Переходим в chan sip settings
  34. Подключение crm системы к атс-коннектору
  35. Последний штрих.
  36. Практическая часть
  37. Придумываем интеграцию заново
  38. Проверка
  39. Траблшутинг с верификацией на сервере
  40. Учётная запись sip для подключения webrtc-клиента
  41. Часть 1 – tls
  42. Часть 2 – srtp
  43. Этот домен припаркован компанией timeweb
  44. Tinycert – recommended
  45. A note about endpoint manager

Системные требования

АТС-коннектор устанавливается на сервер FreePBX (Asterisk).

Для установки и работы АТС-коннектора вам потребуется:

  • Сервер с операционной системой Linux (CentOS, Fedora, Ubuntu) с ядром 2.6
  • FreePBX v2.x
  • IP АТС Asterisk 1.8.x / 11.x / 13.x / 16.x (начиная с версии 16.3)

Проверьте перед установкой

Перед установкой и настройкой АТС-коннектора, пожалуйста, проверьте:

  • Компьютер, на который вы устанавливаете АТС-коннектор, удовлетворяет системным требованиям
  • У вас есть доступ к компьютеру с правами администратора
  • У вас есть установочный архив АТС-коннектора для вашей версии Asterisk

Установка АТС-коннектора

3.1. Для установки АТС-коннектора выполните следующие действия: в консоли на сервере Asterisk выполните команду (вы можете ее просто скопировать в консоль SSH):

Для Asterisk1.8

Настройка FreePBX

Проверьте настройки внутренних номеров (Applications – Extensions). Задайте значение поля
Outbound CID, оно должно быть задано в следующем формате “имя абонента” .

Внимание! На протяжении всей обработки звонка необходимо сохранять корректные значения полей
источника и назначения звонка, т.е. нельзя изменять добавочные в процессе обработки звонка –
например, на названиеномер линии)

Настройка АТС-коннектора

Для настройки АТС-коннектора откройте страницу Applications -> Prostie Zvonki.

Завершение установки

Для завершения установки перезагрузите Asterisk, выполнив в консоли управления Asterisk следующую
команду (команды можно писать в FreePBX -> Администратор -> Командная строка Астериск):

CLI> core restart now

Проверьте, загрузился ли АТС-коннектор командой:

CLI> module show like cel_prostiezvonki.so

Если в списке появился АТС-коннектор cel_prostiezvonki.so, то установка прошла успешно. Если модуль в
списке не появился, обратитесь к пункту «3.1. Asterisk не загружает модуль. Модуль не появляется в
списке загруженных модулей» руководства по решению вопросов для АТС-коннектора Asterisk.

Affected dpma versions

Any System running DPMA versions older than the following are affected:

  • DPMA 3.4.13 for Asterisk 11, 13, 15, 16
  • DPMA 3.5.7 for Asterisk 13, 15, 16, 17, 18
  • DPMA 3.6.2 for Asterisk 13, 16, 17, 18

All asterisk based systems using d-series phones with dpma are affected, including:

  • FreePBX systems using D-Phones and the deprecated Digium Phones module (Connectivity → Digium Phones)
  • FreePBX and PBXact systems using D-Phones and using Endpoint Manager with DPMA enabled

If not using Sangoma (Digium) D Series phones, you are not affected.

Asterisk based systems not covered above

Consult the documentation of your system for the supported method of upgrading DPMA. The related Asterisk wiki page is here.

Dns-имя

Первое, что нужно для нормальной работы WebRTC — DNS-имя для вашего сервера Asterisk. В принципе, WebRTC будет работать и с IP-адресом, но такое решение годится только для тестирования. В описываемом примере DNS-имя сервера Asterisk будет fubar-pbx.local. Указывать DNS-имя где-либо в настройках самого сервера телефонии не обязательно, поэтому переходим к следующему пункту.

Docker

Если хочется быстро попробовать решение – есть вариант с Docker – быстро создать контейнер, дать ему порты наружу, подсунуть файлы настроек и попробовать (это вариант с LetsEncrypt контейнером, если сертификат уже есть, просто нужно перенаправить обратный прокси на веб сервер FreePBX (ему мы дали другой порт – 88), LetsEncrypt в докере по мотивам этой статьи

Запускать файл надо в скачанной папке проекта (после git clone), но предварительно залезть в конфиги астериска (папка asterisk) и прописать там пути к записям и URL вашего сайта

Freepbx distro

All supported versions of the FreePBX Distro using Asterisk 11 and higher have new DPMA rpm’s to the standard and devel repos. You can upgrade the DPMA rpm by doing System Updates in the normal way

I. настройка во freepbx

По умолчанию UDP-порты для FreePBX 13 – chan_sip@5061, chan_pjsip@5060. Изменим их на chan_sip@5060 и chan_pjsip@5062 перед началом настройки УАТС. Вы можете выбрать любые другие порты и сделать их по умолчанию.

В настройках SIP Asterisk «General SIP Settings» нужно выбрать какой порт назначен и для какой технологии. Выбрав Chan SIP по умолчанию, SIP будет использовать порт TLS 5061, а pjSIP будет использовать порт TLS 5161.

Let’s encrypt

Alternatively, you can use Let’s Encrypt, or LE. LE is a non-profit certificate authority. It provides free certificates for use across the web and has recently issued over a billion certificates.

Pbxact

All supported versions of PBXact using Asterisk 11 and higher have new DPMA rpm’s to the PBXact repos. You can upgrade the DPMA rpm by doing System Updates in the normal way

Ssl-сертификат

SSL-сертификат для работы WebRTC нужен обязательно. Соединение по websocket может быть нешифрованным, но голос может передаваться только по SRTP с использованием DTLS, наличие сертификата для этого обязательно. Для нормальной работы WebRTC, сертификат должен быть доверенным для всех браузеров, в которых будет запускаться WebRTC-клиент, поэтому сертификат придётся купить или воспользоваться корпоративным центром сертификации.

Для тестирования сгодится и сертификат, сгенерированный с помощью EasyRSA, открытый ключ полученного центра сертификации даже можно будет сделать доверенным для клиентов и использовать полученный сертификат в продашн. Естественно, в поле сертификата CN должно быть указано DNS-имя (или IP-адрес, если Вы всё-таки решили использовать IP-адрес).

Про сертификаты:  Штукатурка цементно-известковая БОЛАРС УНИПЛАСТ 20 кг купить в интернет-магазине Идеи для дома

yes | cp ./vars.example ./vars# Заполняем параметры EasyRSA приемлимыми значениямиsed -ri ‘s|^#set_var EASYRSA_REQ_COUNTRY[[:space:]] .*|set_var EASYRSA_REQ_COUNTRY      «RU»|;s|^#set_var EASYRSA_REQ_PROVINCE[[:space:]] .*|set_var EASYRSA_REQ_PROVINCE     «Province»|;s|^#set_var EASYRSA_REQ_CITY[[:space:]] .

*|set_var EASYRSA_REQ_CITY     «City»|;s|^#set_var EASYRSA_REQ_ORG[[:space:]] .*|set_var EASYRSA_REQ_ORG       «Organization»|;s|^#set_var EASYRSA_REQ_EMAIL[[:space:]] .*|set_var EASYRSA_REQ_EMAIL   «root@fubar-pbx.local»|;s|^#set_var EASYRSA_REQ_OU[[:space:]] .*|set_var EASYRSA_REQ_OU         «Unit»|’ ./vars

sed -ri ‘s|^#set_var EASYRSA_KEY_SIZE[[:space:]] .*|set_var EASYRSA_KEY_SIZE    2048|;s|^#set_var EASYRSA_ALGO[[:space:]] .*|set_var EASYRSA_ALGO             rsa|;s|^#set_var EASYRSA_CA_EXPIRE[[:space:]] .*|set_var EASYRSA_CA_EXPIRE   3650|;s|^#set_var EASYRSA_CERT_EXPIRE[[:space:]] .

# Создаём ключ и сертификат центра сертификации./easyrsa —batch init-pki./easyrsa —batch —req-cn=»$(uuid)» build-ca nopass

# Создаём и подписываем сертификат для сервера./easyrsa —batch —req-cn=fubar-pbx.local gen-req FubarPBX nopass./easyrsa —batch sign server FubarPBX

# Конвертируем полученный сертификат в формат PEMopenssl x509 -in pki/issued/FubarPBX.crt -out pki/issued/FubarPBX.pem -outform PEM

Нужные нам файлы:./pki/ca.crt — сертификат центра сертификации./pki/issued/FubarPBX.pem — сертификат сервера./pki/private/FubarPBX.key — закрытый ключ сервера

Все эти файлы нужно загрузить через модуль FreePBX «Certificate Management» (выберите пункт «New Certificate» → «Upload Certificate» при добавлении сертификата)

В поле Private Key вставьте закрытый ключ, в поле Certificate — сертификат, в поле Trusted Chain — сертификат центра сертификации, затем нажмите «Generate Certificate» (FreePBX сохранит данные сертификата в файлы в директории /etc/asterisk/keys).

Stun-сервер

Даже если между клиентом и сервером не будет NAT, для нормальной работы WebRTC требуется наличие механизма ICE, как минимум, для того, чтобы клиент и сервер могли определить, какой из своих IP-адресов указывать в SDP. Совсем без ICE, WebRTC работать не будет, т.к. в заголовки c= в SDP будут вписываться либо все IP-адреса хоста, либо ни одного.

Для реализации ICE мы поднимем простой STUN-сервер, он не поможет нам обойти большую часть современных NAT, но от него это и не требуется. NAT будем обходить с помощью привычного механизма SIP Comedia, а STUN здесь нужен для того, чтобы клиент и сервер WebRTC могли определить правильный IP-адрес для подстановки в SDP.

STUN-сервер желательно установить на другом хосте (не на сервере Asterisk), на CentOS 6 можно поставить из EPEL пакет stun-server. Для работы STUN-сервера необходимо наличие двух IP-адресов, в нашем случае это будут адреса 192.168.100.55/24 и 192.168.100.56/24, оба настроены на сетевом интерфейсе eth0.

Также нам понадобится init-скрипт для STUN-сервера (в пакет stun-server он почему-то не входит), приведённый init-скрипт был позаимствован здесь

#!/bin/sh##   Startup/shutdown script for the STUN-Server##   Linux chkconfig stuff:##   chkconfig: 35 90 10#   description: Startup/shutdown script for the STUN-Server#

# Source function library.if [ -f /etc/init.d/functions ] ; then. /etc/init.d/functionselif [ -f /etc/rc.d/init.d/functions ] ; then. /etc/rc.d/init.d/functionselseexit 0fi

DAEMON=/usr/sbin/stun-serverIP1=192.168.100.55IP2=192.168.100.56

prog=stun-server

Switchvox

Switchvox systems are affected by this issue. Consult the appropriate resources on this page.

Thanks!

Hopefully this guide was helpful for installing a free certificate into FreePBX. Get in touch with any suggestions: hi@xga.ie

Автоматизация установки

На github начата разработка инсталятора, чтоб можно было устанавливать еще проще. Но гладко было на бумаге – пока устанавливаем все это вручную, благо после ковыряния во всем этом стало кристально ясно , что с кем дружит, кто куда ходит и как это дебажить. Инсталлятора пока нет (

Выпуск сертификата. certificate management.

Это первый камень преткновения на который наткнется администратор не знакомый с сертификацией. Не понимаю, почему эта опция описывается в середине настройки, а точнее не описывается, а упоминается, что это надо сделать. Не буду вдаваться в теорию, напишу как надо сделать, что бы все работало.

Заходим

Драйвер chan_pjsip

Выберите сертификат для использования. Сертификаты устанавливаются в модуле “Certificate Manager” на вашей УАТС.

Установите «Метод SSL» (“SSL Method”) для использования «sslv2»

Установите «Проверять клиента» (“Verify Client”) и “Проверять сервер” (“Verify Server”) на «Да» (“Yes”).

Измените “Транспорт” (“Transport”), “Шифрование мультимедиа” (“Media Encryption”) и “Требовать шифрование RTP (Media)” (“Require RTP (Media) Encryption”) как показано на рисунке ниже.

Если телефон уже настроен в EPM, переустановите конфигурацию для SIP-аккаунта, на котором вы будете использовать SRTP или TLS, на основе настроек, которые вы произвели, и перезагрузите телефоны. После перезагрузки телефоны будут использовать SRTP и TLS.

Драйвер chan_sip

После того, как будут выполнены предварительные настройки, мы включим TLS/SSL/SRTP в настройках “Asterisk SIP Settings” (Далее мы рассмотрим как настроить шифрование, используя драйвер pjSIP).

Установите «Включить TLS» (“Enable TLS”) на «Да» (“Yes”)

Выберите сертификат для использования. Сертификаты устанавливаются в модуле “Certificate Manager” на вашей УАТС.

Установите «Метод SSL» (“SSL Method”) для использования «sslv2»

Установите «Не проверять сервер» (“Don’t Verify Server”) на «Нет» (“No”). (Это кажется немного противоречивым, но мы хотим проверить как это будет работать).

Измените расширения, которые вы хотите включить TLS/SRTP, на вкладке расширений включите TLS и SRTP, как показано в примере ниже.

Другие интеграции

А почему бы заодно не сунуть несколько CRM в скрипты, подумали мы. Изучили несколько API других CRM, особенно бесплатной встроенной в некоторые АТС – ShugarCRM и Vtiger, и да! можно, принцип тот же. Но это уже другая история, которую потом будем заливать на гитхаб отдельно.

Ссылки

Дисклеймер: любые совпадения с реальность вымышлены и это был не я,

Изучаем логику работы

Итак для начала, как все это должно работать. При поступления звонка извне на АТС (событие SIP INVITE от провайдера) начинается обработка диалплана(плана набора, dialplan) – правил, что и в каком порядке делать со звонком. Из первого пакета можно получить много информации, которую потом можно использовать в правилах.

Отличным инструментом для изучения внутренностей SIP является анализатор sngrep (ссылка) который просто ставится в популярных дистрибутивах через apt install/yum install и подобное, но можно и из исходников собрать. Посмотрим лог звонка в sngrep

В упрощенном виде диалплан занимается только первым пакетом, иногда также в процессе разговора совершается перевод звонков, нажатия кнопок (DTMF), разные интересности типа FollowMe, RingGroup, IVR и прочего.

Что внутри Invite пакета

Про сертификаты:  Готовим претензию на возврат денежных средств

Собственно большинство простых диалпланов работают с первыми двумя полями и вся логика крутится вокруг DID и CallerID. DID – куда звоним, CallerID – кто звонит.

Но ведь у нас фирма а не один телефон – и значит в АТС скорее всего есть группы вызова (одновременный/последовательный звонок нескольких аппаратов) на городских номерах (Ring Group), IVR (Здравствуйте, вы позвонили… Нажмите один для…), Автоответчики (Phrases)

, Временные условия (Time Conditions), Переадресация на другие номера или на сотовый (FollowMe, Forward). Это значит, что однозначно определить кому на самом деле придет вызов и с кем будет разговор при поступлении вызова очень сложно. Вот пример начала прохождения типового вызова в АТС наших клиентов

После успешного входа звонка в АТС происходит путешествие его по диалплану в разных “контекстах”. Контекст с точки зрения Asterisk – это нумерованный набор команд, каждая из которых содержит фильтр по набранному номеру (он называется exten, для наружного вызова на начальном этапе exten=DID).

Командами в строке диалплана может быть все что угодно – внутренние функции (например позвонить внутреннему абоненту – Dial(), положить трубку – Hangup()), условные операторы (IF, ELSE, ExecIF и подобные), переходы к другим правилам этого контекста (Goto, GotoIF), переход другим контекстам в виде вызова функций (Gosub, Macro).

Вся логика работы FreePBX построена на включении друг в друга разных контекстов через include и вызов через Gosub, Macro и обработчики Handler. Рассмотрим контекст входящих вызовов FreePBX

Вызов проходит по всем контекстам сверху вниз по очереди, в кажом контексте могут быть вызовы других контекстов как макросов (Macro), функций(Gosub) или просто переходы (Goto), поэтому реальное дерево того, что вызывается можно отследить только в логах.

Типовая схема настройки типичной офисной АТС показана ниже. При вызове во входящих маршрутах ищется DID, по нему проверяются временные условия, если все в порядке – запускается голосовое меню. Из него по кнопке 1 или таймауту выход на группу дозвона операторов.

Где в этом алгоритме звонка мы должны поставлять информацию о начале звонка в CRM, где начинать запись, где оканчивать запись и отсылать ее вместе с информацией о звонке на CRM?

Инициализация скриптов и создание сервиса

Поскольку схема работы с Битрикс 24, сервисом для AMI не совсем проста и прозрачна, на ней надо остановится отдельно. Астериск при активации AMI просто открывает порт и все. При присоединении клиента она запрашивает авторизацию, потом клиент подписывается на нужные события.

Как только звонок поступает, возникает событие NewExten начиная с родительского контекста [from-pstn], затем идут все события по порядку следования строк в контекстах. При получении информации из заданных в диалплане _custom переменных CallMeCallerIDName и CallStart вызывается

Конфигурация asterisk chan_pjsip

Теперь давайте настроим драйвер PJSIP канала Asterisk для использования TLS.

В файле конфигурации /etc/asterisk/pjsip.conf вам необходимо включить транспорт с поддержкой TLS. Примером может быть следующим:

[transport-tls]
type=transport
protocol=tls
bind=0.0.0.0:5061
cert_file=/etc/asterisk/keys/asterisk.crt
priv_key_file=/etc/asterisk/keys/asterisk.key
method=tlsv1

Обратите внимание на protocol, cert_file, priv_key_file и method. Здесь мы используем протокол TLS, мы указываем ключи, которые мы сгенерировали ранее для cert_file и priv_key_file, и установили метод TLSv1.

Затем необходимо указать SIP-клиенту использование протокола TLS. Пример ниже:

Конфигурация asterisk chan_sip

В файле конфигурации /etc/asterisk/sip.conf установите следующее:

tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=ALL
tlsclientmethod=tlsv1

Здесь мы активируем поддержку TLS.

Мы привязываем TLS к нашему локальному IPv4 (по умолчанию для порта TLS – 5061) адресу.

Мы установили файл сертификата TLS тот, который мы создали выше.

Мы установили Центр сертификации тот, который мы создали выше.

Шифры TLS установлены на ВСЕ, поскольку это наиболее подходящий вариант.

И мы установили SIP-метод аутентификации TLS в TLSv1, так как это предпочтительнее для RFC и для большинства SIP-клиентов.

Затем вам нужно настроить SIP-аккаунт в Asterisk для использования TLS в качестве транспортного протокола. Вот пример:

[maksim]
type=peer
secret=mypassword
host=dynamic
context=local
dtmfmode=rfc2833
disallow=all
allow=g722
transport=tls

Обратите внимание на вариант transport. Драйвер канала Asterisk SIP поддерживает три типа: udp, tcp и tls. Поскольку мы настраиваем TLS, мы его и установим. Также можно указать несколько поддерживаемых типов транспорта для партнера, разделив их запятыми.

Настройка вызовов

1. Если вам нужно добавлять префикс к номерам телефонов при входящих звонках, вы можете задать
его в параметре Префикс для входящих.

2. Если вам нужно добавлять префикс к номерам телефонов при исходящих звонках (при использовании
функции «Звонок по клику»), вы можете задать его в параметре Префикс при исходящих.

3. Если вы используете не SIP телефоны, а телефоны, которые общаются по другому протоколу
(например IAX2), то измените тип канала в параметре Тип канала на соответствующий.

Настройка записи телефонных разговоров

АТС-коннектор использует систему записи разговоров FreePBX.

Настройка умной переадресации

Умная переадресация – перехват клиентских звонков и их автоматическое перенаправление на
телефоны ответственных сотрудников. Для включения переадресации выполните следующие действия:

1. В FreePBX зайдите на страницу Входящая маршрутизация и выберите входящий маршрут, для
которого будет использоваться умная переадресация.

2. Для включения умной переадресации поставьте галочку напротив параметра
Умная переадресация.

3. Зайдите в Applications -> Prostie Zvonki.

4. Установите таймаут (в секундах) для поиска номера ответственного сотрудника в параметре
Таймаут поиска. Если АТС-коннектор не получит от модуля CRM (базы клиентов) номер ответственного
сотрудника за данный промежуток времени, то дальнейшая обработка вызова перейдет к АТС Freepbx
(Asterisk).

Общая настройка атс-коннектора

1. При необходимости, измените директорию и имя лог файла в параметре Лог файл.

2. При необходимости, измените уровень записи лога в параметре Уровень записи лога.

3. Если соединение между АТС-коннектором FreePBX (Asterisk) и модулем CRM (базы клиентов)
прерывается, то история звонков накапливается в специальной очереди. При подключении модуля CRM
история звонков автоматически загружается из этой очереди.

Для сохранения истории звонков за 1 день (при отсутствии подключения модуля CRM!) установите
значение параметра Размер очереди событий таким образом, чтобы оно было в 2 раза больше
среднего числа звонков за день.

Про сертификаты:  Microtech troodon — купите microtech troodon с бесплатной доставкой на АлиЭкспресс version

Переходим в chan sip settings

Выставляем настройки как на рисунке ниже. Именно здесь выбирается сертификат, созданный ранее.

Обратите внимание на «Don’t Veryfy Server» должно стоять значение «No», «Yes» выставляется если у вас все провайдеры поддерживают шифрование. Enabled TLS отвечает за активацию кнопок в первом разделе, о которой говорил выше.

Последняя настройка, которая может влиять на активность кнопок. Необходимо, что бы «Bind Port» и «TLS Bind Port» не совпадали!

Подключение crm системы к атс-коннектору

В окне настроек модуля «Простые звонки» вашей CRM системы задайте:

1. Адрес сервера, на котором установлен АТС-коннектор.

Адрес сервера состоит из префикса, хостнейма и порта. Например: ws://atsoffice:10150

Префикс

  • Если в настройках АТС-коннектора параметр use_ssl установлен в false, используйте префикс ws://,
    например: ws://atsoffice:10150
  • Если в настройках АТС-коннектора параметр use_ssl установлен в true, используйте префикс wss://,
    например: wss://atsoffice:10150

ХостнеймПосле префикса укажите локальный («внутрисетевой») хостнейм сервера (вы можете указать IP адрес
сервера только если в настройках АТС-коннектора параметр use_ssl установлен в false). Компьютеры
пользователей CRM системы должны «видеть» сервер по сети.

Указывайте локальный («внутрисетевой») хостнейм сервера, даже если вы собираетесь использовать
«облачную» CRM систему (например amoCRM, Битрикс24, Мегаплан и т.п.). Пользователи «облачной»
CRM системы устанавливают TCP соединение с АТС-коннектором из браузера, запущенного на своем
компьютере.

ПортПосле названия или IP адреса сервера через символ «двоеточие» укажите порт, на котором АТСконнектор принимает входящие подключения. Порт задается параметром port в конфигурационном
файле АТС-коннектора (или в окне настроек). Значение по умолчанию: 10150.

2. Пароль для работы с АТС-коннектором, если был задан параметром password в конфигурационном
файле АТС-коннектора (или в окне настроек). Если значение параметра password не задано, оставьте
поле «Пароль» пустым или укажите 0 (если поле «Пароль» является обязательным в окне настроек
модуля «Простые звонки» вашей CRM системы).

7.1.2. Пароль для работы с АТС-коннектором, если был задан параметром password в
конфигурационном файле АТС-коннектора (или в окне настроек). Если значение параметра password не
задано, оставьте поле «Пароль» пустым или укажите 0 (если поле «Пароль» является обязательным в
окне настроек модуля «Простые звонки» вашей CRM системы).

Последний штрих.

Общая настройка шифрования закончилась, осталось включить шифрование в транках. Делается это в каждом транке отдельно. Заходим: ConnectivityTrunks Выбираем нужный транк и идем в меню: sip SettingsOutgoing В поле PEER Details в конце добавляем две строчки: transport=tls encryption=yes

На этом
все!!! Осталось проверить.

Практическая часть

apt-get install libsrtp0-dev

Придумываем интеграцию заново

Для того, чтоб наш FreePBX мог сообщать в AMI простыми способами о начале звонка, времени окончания, номерах, именах записанных файлов, рассчитывать длительность звонка проще всего воспользоваться тем же трюком, что и исходные авторы – ввести свои переменные и парсить вывод на их присутствие. PAMI предлагает это делать просто через функцию-фильтр.

Вот пример задания своей переменной для времени начала звонка (s – это специальный номер в диалплане, который выполняется ДО начала поиска по DID)

[ext-did-custom]

exten => s,1,Set(CallStart=${STRFTIME(epoch,,%s)})
Пример AMI события по этой строке

Поскольку FreePBX перезаписывает файлы extention.conf и extention_additional.conf, мы будем использовать файл extention_custom.conf

Проверка

Внутреннему номеру прописываем маршрут через шифрованный транк и совершаем звонок на свой сотовый (либо любой телефон, где звонок будет принят и удержан). После установления связи и удержании звонка идем: ReportsAsterisk InfoChannels

И по номеру, на который звоним, находим свой канал

Траблшутинг с верификацией на сервере

Если хост или IP-адрес, используемые для общего имени в вашем сертификате, не совпадают с вашим сервером, тогда вы можете столкнуться с проблемами, когда ваш клиент делает вызов через Asterisk. Убедитесь, что у клиента настроено – не проверять сервер на соответствие сертификату.

При вызове из Asterisk через софтфон вы можете столкнуться с ERROR в CLI Asterisk, подобным этому:

Учётная запись sip для подключения webrtc-клиента

Создайте обычную учётную запись для канала chan_sip и укажите дополнительно следующие параметры:

NAT Mode: Yes — (force_rport,comedia)Transport: WSS OnlyEnable AVPF: YesForce AVP: YesEnable ICE Support: YesEnable rtcp Mux: YesEnable Encryption: Yes (SRTP only)Enable DTLS: YesUse Certificate: FubarPBX (выберите из списка загруженный ранее сертификат)DTLS Verify: FingerprintDTLS Setup: Act/Pass

Те же дополнительные параметры для указания в файле sip.conf в том же порядке:

nat=force_rport,comediatransport=wssavpf=yesforce_avp=yesicesupport=yesrtcp_mux=yesencryption=yesdtlsenable=yesdtlscertfile=/etc/asterisk/keys/FubarPBX.crtdtlsprivatekey=/etc/asterisk/keys/FubarPBX.keydtlsverify=fingerprintdtlssetup=actpass

Для примера был создан номер 100 со случайным паролем.

Часть 1 – tls

Создание ключей безопасностиСоздадим директория хранения ключей безопасности

mkdir /etc/asterisk/keys

Затем, используя скрипт “ast_tls_cert” из исходного каталога “contrib/scripts” в Asterisk, создадим самоподписной центр сертификации (Certificate Authority) и сертификат для Asterisk.

Часть 2 – srtp

Теперь, когда мы включили TLS, наша сигнализация безопасна, поэтому больше никто не узнает, какие расширения используются нами на PBX. Но наши вызовы по-прежнему не защищены, поэтому кто-то может отследить наши разговоры RTP. Давайте это исправим.

Поддержка SRTP обеспечивается libsrtp. libsrtp должен быть установлен на сервере до компиляции Asterisk, иначе вы увидите что-то вроде:

[Jan 24 09:29:16] ERROR[10167]: chan_sip.c:27987 setup_srtp: No SRTP module loaded, can't setup SRTP session.

на вашем CLI Asterisk. Если вы это видите, установите libsrtp (это для тех, кто читает статью с конца), а затем переустановите Asterisk (./configure; make; make install).

Давайте вернемся к нашим pee настройкам в sip.conf. Добавляем строку шифрования:

[maksim]
type=peer
secret=mypassword
host=dynamic
context=local
dtmfmode=rfc2833
disallow=all
allow=g722
transport=tls
encryption=yes
context=local

На этом все.

Этот домен припаркован компанией timeweb

I recommend using TinyCert to generate your SSL certificate. I have used TinyCert for a few years now to manage ‘my own’ Certificate Authority. The certificate will also last for one year so requires less ‘maintenance’ than Let’s Encrypt.

A note about endpoint manager

DPMA module upgrades unrelated to this SSL issue may cause issues with older versions of Endpoint Manger (EPM). For systems using DPMA with EPM please consult the wiki page here for more information.

Оцените статью
Мой сертификат
Добавить комментарий