Asterisk - Client Konfiguration
für Gesprächs- und Transportverschlüsselung
Mit der nachfolgenden Konstellation ist es mir gelungen, verschlüsselte Telefonate zu führen, unabhängig vom angebundenen Netz (Mobilfunk, Heimnetz hinter NAT, Freifunk, lokales Netz)
Vorbereitung
- Portweiterleitungen im Router auf die IP des Asterisk-Servers
- 1 SIP-Port (TCP), der in der pjsip.conf unter Transport steht (hier: 5088)
- pro Gespräch 2 UDP Ports für die Gesprächsdaten, diese sind in der rtp.conf anzugeben
- Zertifikate über let's encrypt besorgen, um den Server über TLS ansprechen zu können
pjsip.conf
1. Transportverschlüsselung (TLS)
[transport-tls]
type=transport
protocol=tls
bind=192.168.178.23:5088
cert_file=/etc/asterisk/certs/asterisk.cert
priv_key_file=/etc/asterisk/certs/asterisk.key
method=tlsv1_2
local_net = 192.168.178.0/24
local_net = 127.0.0.1/32
external_media_address=123.234.123.23
external_signaling_address=123.234.123.23
- cert_file: Let's encrypt Fullchain Datei für den DynDNS-Namen
- priv_key_file: Let's encrypt Key Datei für den DynDNS-Namen
- bind: Adresse des Asterisk, gefolgt von dem Port, auf den Clients connecten sollen
- local_net: Hier kommt das lokale Netz sowie das localhost Netz rein
- external_*: die aktuelle externe IP-Adresse des Anschlusses, muss durch ein Script automatisch bei IP-Wechsel geändert werden
2. Gesprächsverschlüsselung / Client-Konfiguration
; ==== Templates ====
[ext-srtp](!)
media_encryption=sdes
media_encryption_optimistic=yes
disallow=all
allow=g722,ulaw,opus
rewrite_contact=yes
direct_media=no
force_rport=yes
rtp_symmetric=yes
Diese Vorlage wird für alle Clients, die nachher verschlüsselt arbeiten sollen, 1x erstellt
- media_encryption: wir wollen RSTP mit SDES machen
- media_encryption_optimistic: falls die Gegenseite keine Gesprächsverschlüsselung unterstützt, trotzdem verbinden ohne Gesprächs-Verschlüsselung
- disallow, all: Hier kommen die Codecs rein, die die Clients nachher nutzen sollen, in der hier angegebenen Reihenfolge wird abgearbeitet (G722 zuerst, dann u-LAW, dann Opus)
- rewrite_contact: Interne Adressen werden durch die externe ersetzt (wichtig für NAT)
- direct_media: Clients können nur über Asterisk den Stream schicken, nicht untereinander
- force_rport, rtp_symmetric: Nutze die in der rtp.conf angegebenen RTP-Ports
3. Rest der Client-Konfiguration
; ==== Teilnehmer ====
[1000](ext-srtp)
type=endpoint
context=from-internal
callerid="Tester 1"
auth=1000
aors=1000
[1000]
type=auth
auth_type=userpass
password=strenggeheim
username=1000
[1000]
type=aor
max_contacts=2
Der Rest der Client-Konfiguration ist identisch zum nicht-verschlüsselten Client. Dabei entspricht die 1000 der "Nebenstellennummer". Wichtig ist, die Vorlage (ext-srtp) dahinter zu setzen, damit das Template aus der vorherigen Sektion übernommen wird. Der Rest ist die Authentifizierung sowie die Anzahl der maximal gleichzeitigen Registrierungen.