Verschlüsseltes SIP VoIP mit dus.net, chan_pjsip, Asterisk, SRTP und tls.

Linux Network VoIP

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben