- Исходные данные
# uname -sr FreeBSD 11.1-RELEASE-p8 # pkg info | grep asterisk asterisk13-13.20.0 Open Source PBX and telephony toolkit
- Конфигурация порта
Опция, которая должна быть установлена при компиляции порта:# cd /usr/ports/net/asterisk13 # make config ... [x] SRTP SecureRTP support ...
Если asterisk был собран без этой опции, то его необходимо пересобрать.# cd /usr/ports/net/asterisk13 # make install
Если пересборка не нужна, то нам в любом случае понадобятся исходные файлы, поэтому выполняем:# cd /usr/ports/net/asterisk13 # make
- Создаем сертификаты
Самоподписной сертификат для сервера. Редактируем файл /usr/ports/net/asterisk13/work/asterisk-13.20.0/contrib/scripts/ast_tls_cert. Меняем везде 365 дней на 3650 (10 лет).# cd /usr/ports/net/asterisk13/work/asterisk-13.20.0/contrib/scripts # ./ast_tls_cert -C pbx.company.ru -O "My Company" -d /usr/local/etc/asterisk/keys
-C - имя хоста или ip адрес, нужно прописать в /etc/hosts
-O - имя организации
-d - директория, куда запишутся сертификаты (будет создана при генерации)
В процессе установки необходимо придумать (один раз) и ввести несколько раз пароль
- Настройка asterisk
Файл /usr/local/etc/asterisk/sip.conf.
Добавляем (или меняем) в блоке [general]tlsenable = yes tlsbindaddr = 0.0.0.0:5061 tlscertfile = /usr/local/etc/asterisk/keys/asterisk.pem tlscafile = /usr/local/etc/asterisk/keys/ca.crt tlscipher = ALL tlsclientmethod = tlsv1 tlsdontverifyserver = yes
Перезагружаем и проверяем:*CLI> sip reload
openssl s_client -connect localhost:5061 CONNECTED(00000003) depth=1 CN = Asterisk Private CA, O = Home Inc. verify error:num=19:self signed certificate in certificate chain --- Certificate chain 0 s:/CN=localhost/O=My Company i:/CN=Asterisk Private CA/O=My Company 1 s:/CN=Asterisk Private CA/O=My Company i:/CN=Asterisk Private CA/O=My Company --- Server certificate -----BEGIN CERTIFICATE----- MIIDUzCCATsCAQEwDQYJKoZIhvcNAQELBQAwMjEcMBoGA1UEAwwTQXN0ZXJpc2sg UHJpdmF0ZSBDQTESMBAGA1UECgwJSG9tZSBJbmMuMB4XDTE4MDMxODE2MDcwMVoX DTI4MDMxNTE2MDcwMVowMTEbMBkGA1UEAwwSdG9reW8ubmV0LWFycmF5LnJ1MRIw EAYDVQQKDAlIb21lIEluYy4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANiA Mcmarq3mZ45nzhbkxKRNx8DZNe2C1uw0Vwc1Ow77a3akg8atzOdxSbbV+ODEqbfF v3DhfKDMpGWJWePN6YVGUkcTqLNfMh0xO34eLy0vheFwCMUDFMJFlYZpw6vOrDJO g+qMVH2CpRBpl1A8uROiJg1vzwkSU7zlqHls7puJAgMBAAEwDQYJKoZIhvcNAQEL BQADggIBAJjKI0Toldzggc/YpztP83fxyE1Wa9rGvMuDBhj05X2sL2caPKglKRCy VWhMC78qIHDrvThy5XPmcop65tBdbLErynVqEekMndcnBCDSN22FIEwhv3pubSaK VcPyuwMt02AXnZwMZOsRFTkDNttQbr+WICVcpC4taaEDChdh9vvjJLZZmUioBBeo 8e1OGY0M8AJ1lhNLk4Qd41UhJiBBCD58Vb274IkDQGZ1kP4VyuCM5pOeYKc9PeSO QCGjMebf0SavcAcEiAGZCmvT9A4E0usaa0LAshA1sUM+taKTRlScKEkmNIIzUIQf sbQ/436Yx8YIU/cEbMdh24WZTrO/YW4NUGkzAMci3SqN1mS1X89Q4UrQ2gEBOFbM Hf4qZpdF3vVYwF5YURzfYDI7kE8SpjZqbWTYMzz/mmKXr8bTvyJM+MRg4rqTrNlx 0OUPg58X4T1bHVJK+aRxNJivYC9QV/L5axqqqE3N4mm76xT2tckdaUSqJ4aKzw2K S0s6fzJHAlZDGPvBa8BNdfOle6MOEKjKvBWHd+jE7F8GuuLz8WPGZ14tpaGjJhWA nwwB0wVzaJ8Wskxhll2aENe21c6A6Q1eF/gxYI3kIIIdkgKEyRDji0exarwOCWdl O5ueWkPsopub6rU+20mnRPFPeKRRrWN0Z2z5wsY9ecG64hgczN8u -----END CERTIFICATE----- subject=/CN=localhost/O=My Company issuer=/CN=Asterisk Private CA/O=My Company --- No client certificate CA names sent Peer signing digest: SHA512 Server Temp Key: ECDH, P-256, 256 bits --- SSL handshake has read 2641 bytes and written 433 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384 Server public key is 1024 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: .... --- closed
- Настройка клиента (на примере номера 100)
Генерируем ключи для клиента:# cd /usr/ports/net/asterisk13/work/asterisk-13.20.0/contrib/scripts # ./ast_tls_cert -m client -c /usr/local/etc/asterisk/keys/ca.crt -k /usr/local/etc/asterisk/keys/ca.key -C 100.company.ru -O "My Company" -d /usr/local/etc/asterisk/keys -o 100
Понадобится пароль, который использовался при генерации ключей для сервера.
-с - путь к сертификату CA
-k - путь к ключу CA
-С - DNS-имя или ip адрес подключаемого клиента, я вводил от балды
-O - имя организации
-d - путь для генерации ключей
-o - имя генерируемых ключей (должно совпадать с номером пира)
Файл /usr/local/etc/asterisk/sip.conf. Для включения шифрования добавляем в блок клиента:[100] transport=tls encryption=yes
Перезагружаем из консоли:*CLI> sip reload
Настройки на клиентском устройстве необходимо производить в соответствии с инструкцией к нему.
- Проверка статуса шифрования во время звонка в консоли Asterisk
*CLI> sip show channels .... XXX.XXX.XXX.XXX 100 0899059f463f009 (alaw) No Tx: ACK 100 .... *CLI> sip show channel 0899059f463f009 * SIP Call ... Transport: TLS Media: SRTP
Для Transport должно быть указано TLS, а для Media - SRTP
Статья опубликована: 2018-03-18 18:28:25
Последние правки: 2018-05-08 21:06:02
FreeBSD. Включаем шифрование траффика в Asterisk.