TLS — криптографический протокол, обеспечивающий защищённую передачу данных между узлами в сети Интернет. Для Asterisk версии 1.6 — tls предоставляет возможность защищенной аутентификации. Что-бы иметь представление о проводимых подготовительных операциях, рассмотрим последовательность действий при установлении TLS-соединения:

Подробнее об авторизации с помощью клиентских сертификатов — читаем на www.opennet.ru/base/sec/ssl_cert.txt.html. Произведем подключение SIP-абонента к IP PBX Asterisk по защищенному каналу. Asterisk должен быть собран с поддержкой библиотеки openssl (до сборки asterisk — yum install openssl). Решение поставленной задачи можно разделить на три этапа.

Этап номер один — ssl сертификат. Собственный доверенный сертификат (Certificate Authority) необходим для подписи клиентских сертификатов и для их проверки при авторизации клиента на Asterisk. Создаем директорию — mkdir /etc/asterisk/ssl.Для создания сертификата выполняем команду:

Описание аргументов:

req

Запрос на создание нового сертификата.

-new

Создание запроса на сертификат (Certificate Signing Request).

-newkey rsa:1024

Автоматически будет создан новый закрытый RSA ключ длиной 1024 бита. Длину ключа можете настроить по своему усмотрению.

-nodes

Не шифровать закрытый ключ .

-keyout ca.key

Закрытый ключ сохранить в файл ca.key.

-x509

Вместо создания CSR (см. опцию -new) создать самоподписанный сертификат.

-days 500

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

-subj /C=RU/ST=Msk/L=Msk/O=sipring/OU=asterisk/CN=igor/emailAddress= info@sipring.ru

Данные сертификата, пары параметр=значение, перечисляются через ‘/’.

Описание параметров:

С — Двухсимвольный код страны (Country). Необязательный параметр.

ST — Название региона/области/края/республики/… (State Name). Необязательный параметр.

L — Название города/поселка/… (Locality Name).Необязательный параметр.

O — Название организации (Organization Name). Необязательный параметр.

OU — Название отдела (Organization Unit). Необязательный параметр.

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

сертификатов может быть использовано что угодно (Common Name). Обязательный параметр. Максимальная длина 64 символа.

emailAddress — почтовый адрес (E-mail address).Необязательный параметр. Максимальная длина 40 символов. Необязательные параметры могут быть пропущены.

-out ca.crt

Сертификат сохранить в файл ca.crt.

В результате выполнения команды появятся два файла ca.key и ca.crt. Подготовим файл сертификата для Asterisk.

В результате получим файл само-подписанного сертификата -> asterisk.crt, используемый в конфигурации Asterisk. Далее необходимо создать клиентские сертификаты. Для этого подготовим конфигурационный файл с именем ca.config следующего содержания.

И создадим структуру каталогов и файлов, соответсвующую описанной в конфигурационном файле

Аргументы команды для создания клиентского сертификата, полностью аналогичны аргументам использовавшимся при создании самоподписанного доверенного сертификата, но отсутсвует параметр -x509.

И подпишем его с помощью доверенного сертификата.

Описание аргументов:

ca

Подпись запроса с помощью CA.

-config ca.config

Использовать конфигурационный файл ca.config.

-in client.csr

CSR находится в файле client.csr

-out client.crt

Сохранить сертификат в файл client.crt

-batch

Не спрашивать подтверждения подписи.

В результате выполнения команды появится файл клиентского сертификата — client.crt. И так — можем переходить ко второй части — конфигурация Asterisk. Изучим документацию Asterisk SIP/TLS Transport. На самом деле, необходимо внести просто — пару строк в файл sip.conf, в раздел -general.

И клиента подключаемого по TLS.

Перегружаем конфигурацию *CLI> sip reload и переходим к третьему этапу. Копируем файл сертификата, подготовленный нами на первом этапе, на машину, где запущен softphone. И запускаем установку сертификата.

Мастер импорта сертификатов выполнит все необходимые действия.

Жмем далее 🙂

И так сертификат на машине где запущен softphone установлен, можем переходить к подключению. Понятно что устройство, будь то softphone или SIP-телефон … должны поддерживать возможность регистрации по TLS. В нашем примере — это PortGo, выбираем транспорт — TLS и -> Войти.

Контролируем подключение на Asterisk, sip show tcp.

и sip show peer 4507

Видим что регистрация прошла успешно. И наша работа по организации регистрации на Asterisk по протоколу TLS, завершена.