Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. + 7 499 704 2566 Skype Me™!

Asterisk SIP/TLS (Transport Layer Security)

Оцените материал
(3 голосов)

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

  • клиент подключается к серверу, поддерживающему TLS, и запрашивает защищенное соединение;
  • клиент предоставляет список поддерживаемых алгоритмов шифрования и хеш-функций;
  • сервер выбирает из списка, предоставленного клиентом, наиболее устойчивые алгоритмы, которые также поддерживаются сервером, и сообщает о своем выборе клиенту;
  • сервер отправляет клиенту цифровой сертификат для собственной идентификации. Обычно цифровой сертификат содержит имя сервера, имя доверенного центра сертификации и открытый ключ сервера;
  • клиент может связаться с сервером доверенного центра сертификации и подтвердить аутентичность переданного сертификата до начала передачи данных;
  • для того чтобы сгенерировать сеансовый ключ для защищенного соединения, клиент шифрует случайно сгенерированную цифровую последовательность открытым ключом сервера и посылает результат на сервер. Учитывая специфику алгоритма асимметричного шифрования, используемого для установления соединения, только сервер может расшифровать полученную последовательность, используя свой закрытый ключ;

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

  • Создание ssl сертификата (собственного само-подписанного доверенного сертификата).
  • Конфигурация Asterisk (редактирование файла sip.conf).
  • Настройка клиента для работы по TLS.
Этап номер один - ssl сертификат. Собственный доверенный сертификат (Certificate Authority) необходим для подписи клиентских сертификатов и для их проверки при авторизации клиента на Asterisk. Создаем директорию - mkdir /etc/asterisk/ssl.Для создания сертификата выполняем команду:
  • openssl req -new -newkey rsa:1024 -nodes -keyout ca.key -x509 -days 500 -subj /C=RU/ST=Msk/L=Msk/O=sipring/OU=asterisk/CN=sipring.ru/ -out ca.crt

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

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= Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

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

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

С - Двухсимвольный код страны (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.

  • cp ca.crt asterisk.crt
  • cat ca.key >> asterisk.crt

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


  • [ ca ]
  • default_ca = CA_CLIENT
  • [ CA_CLIENT ]
  • dir = ./db # Каталог для служебных файлов
  • certs = $dir/certs # Каталог для сертификатов
  • new_certs_dir = $dir/newcerts # Каталог для новых сертификатов
  • database = $dir/index.txt # Файл с базой данных подписанных сертификатов
  • serial = $dir/serial # Файл содержащий серийный номер сертификата (в шестнадцатиричном формате)
  • certificate = ./ca.crt # Файл сертификата CA
  • private_key = ./ca.key # Файл закрытого ключа CA
  • default_days = 365 # Срок действия подписываемого сертификата
  • default_crl_days = 7 # Срок действия CRL
  • default_md = md5 # Алгоритм подписи
  • policy = policy_anything # Название секции с описанием политики в отношении данных сертификата
  • [ policy_anything ]
  • countryName = optional # Код страны - не обязателен
  • stateOrProvinceName = optional # ......
  • localityName = optional # ......
  • organizationName = optional # ......
  • organizationalUnitName = optional # ......
  • commonName = supplied # ...... - обязателен
  • emailAddress = optional # ......

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

  • # mkdir db
  • # mkdir db/certs
  • # mkdir db/newcerts
  • # touch db/index.txt
  • # echo "01" > db/serial

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

  • openssl req -new -newkey rsa:1024 -nodes -keyout client.key -subj /C=RU/ST=Msk/L=Msk/O=Inc/OU=SIP/CN=sipring.ru/emailAddress= Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. -out client.csr

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

  • openssl ca -config ca.config -in client.csr -out client.crt -batch

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

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.

  • [general]
  • tlsenable=yes
  • tlscertfile=/etc/asterisk/ssl/asterisk.crt

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

  • [4507]
  • transport=tls
  • ...

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

Asterisk SIP TLS

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

Asterisk SIP TLS

Жмем далее :)

Asterisk SIP TLS мастер установки сертификата

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

Portgo выбор регистрации TLS

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

Asterisk регистрация TLS

и sip show peer 4507

Asterisk регистрация TLS

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

PortGo регистрация TLS

обсудить на форуме >>