Mit folgender Config habe ich eine verschlüsselte Verbindung der SIP-Signalisierung mit TLS und der RTP-Sprachkanäle mit SRTP zum Provider dus.net in einem Trunk-Tarif hergestellt:
Hier die pjsip.conf:
Username ist im Format 000xxxxxxxxx und wird in der Config DUSNET_USERNAME genannt.
Der Pfad /etc/ssl/certs ist der Standardpfad für die Sammlung vertrauenswürdiger Zertifikate bei Ubuntu/Debian. Könnte bei anderen Distros woanders liegen.
Für die Verschlüsselung relevante Teile sind rot markiert.
;/etc/asterisk/pjsip.conf [transport-tls] type = transport ; Config des tls Sockets ;Dies zusammen mit ca_list_path und method aktiviert tls protocol = tls ;LAN interface von Asterisk bind = 192.168.0.3:5061 ;LAN Subnet von Asterisk local_net = 192.168.0.0/24 ;Pfad für die Zertifikat CAs bei Ubuntu/Debian ;Benötigt werden hier die Zertifikate für LetsEncrypt (ISRG_Root_X1.pem und ISRG_Root_X2.pem) ca_list_path = /etc/ssl/certs method = tlsv1_2 [reg_secure.dus.net] type = registration ; SIP registration bei dus.net retry_interval = 20 max_retries = 0 expiration = 45 transport = transport-tls outbound_auth = auth_reg_secure.dus.net client_uri = sip:DUSNET_USERNAME@secure.dus.net server_uri = sip:secure.dus.net [auth_reg_secure.dus.net] type = auth ; Zugangsdaten für dus.net password = DUSNET_PASSWORD username = DUSNET_USERNAME [dusnet] type = aor ; Name des SIP-Kontaktes contact = sip:DUSNET_USERNAME@secure.dus.net [dusnet] type = identify ; Zuordnung von incoming traffic von dus.net zum lokalen endpoint "dusnet" endpoint = dusnet match = 83.125.8.71 [dusnet] type = auth ;Zugangsdaten für ausgehende Gespräche für Endpunkt "dusnet". Die gleichen wie oben username = DUSNET_USERNAME password = DUSNET_PASSWORD [dusnet] type = endpoint ; Lokaler Endpunkt dus.net ; Der Kontext im Dialplan in dem eingehende Anrufe von dus.net landen context = in disallow = all allow = ulaw allow = alaw rtp_symmetric = yes ;RTP-Session durch NAT auch bei Stille offen halten rtp_keepalive = 10 ;Hier wird SRTP aktiviert media_encryption = sdes tone_zone = de language = de outbound_auth = dusnet aors = dusnet
Grober Ablauf der Verschlüsselung:
– Server sendet seinen public Key.
– Client verifiziert mit Hilfe des Zertifikats aus der CA
– Client und Server generieren gemeinsamen Schlüssel.
– Verbindung wird mit Schlüssel encrypted.
– tls steht
– Im tls-verschlüsselten SIP-Kanal werden SDP-Blöcke eingebettet
– In diesen verhandeln Client und Server Krypto-Algo für SRTP und den Schlüssel
– RTP-Kanäle werden mit Schlüssel encrypted
– SRTP steht