Цель лабораторной работы - зашифровать трафик между клиентом и Asterisk с использованием протокола TLS.
mkdir /etc/asterisk/certs
openssl req -x509 -nodes -newkey rsa:2048 -days 3650 -keyout /etc/asterisk/certs/asterisk.key -out /etc/asterisk/certs/asterisk.crt
cat /etc/asterisk/certs/asterisk.key >> /etc/asterisk/certs/asterisk.crt
[general]
...
tlsenable=yes
tlscertfile=/etc/asterisk/certs/asterisk.crt
tlscipher=ALL
tlsclientmethod=tlsv1
tlsdontverifyserver=no
[102]
...
transport=tls
encryption=yes
mkdir /etc/asterisk/certs
cd asterisk-20*/contrib/scripts/
./ast_tls_cert -d /etc/asterisk/certs
[transport-tls]
type = transport
protocol = tls
method=tlsv1
cert_file=/etc/asterisk/certs/asterisk.crt
priv_key_file=/etc/asterisk/certs/asterisk.key
;ca_list_path=/etc/asterisk/certs/
bind=0.0.0.0:5061
...
[local-phones-endpoint](!)
...
transport=transport-tls
media_encryption=sdes
(Опционально - не все клиенты поддерживают идентификацию по сертификатам) Сгенерируйте сертификат клиента
./ast_tls_cert -m client -c /etc/asterisk/certs/ca.crt -k /etc/asterisk/certs/ca.key -d /etc/asterisk/certs -o 202
(Опционально - не все клиенты поддерживают идентификацию по сертификатам) Включите требование клиенту предоставить сертификат в pjsip.conf:
;require_client_cert=yes
;verify_client=yes
;verify_server=yes
;ca_list_file=/etc/asterisk/certs/ca.crt
(Опционально - не все клиенты поддерживают идентификацию по сертификатам) Скопируйте сертификат клиента на машину с софтфоном и зарегистрируйте его под учеткой 202. В настройках укажите файл сертификата и включите согласование ключа SDES.