[gelöst] TLS: Asterisk lauscht nicht an Port 5061

MacHaggis

Neuer User
Mitglied seit
23 Mai 2009
Beiträge
4
Punkte für Reaktionen
0
Punkte
0
Hallo Zusammen,

ich nutze Asterisk in folgender Version:
http://svn.digium.com/svn/asterisk/team/group/srtp/
installiert habe ich alles nach der Anleitung:
http://www.voip-info.org/wiki/view/Asterisk+SRTP

SRTP läuft nun auch endlich vollständig, jedoch bereitet mir TLS noch so einige Probleme.
Ich nutze ein LinuxFromScratch aus dem Uni-Labor. und hab folgenden Versuchsaufbau eingerichtet:

Softphone <> Asterisk <> Softphone

Jetzt habe ich aber das Problem, dass bei der Registrierung eines UserAgent vom Asterisk-Port 5061 beim TCP Handshake ein [RST/ACK] zurückkommt. Demnach ist der Port nicht offen bzw. Asterisk horcht nicht an diesem Port.
nmap bestätigt auch dass der Port 5061 geschlossen ist. Da ich TLS voraussetze schlägt natürlich die Registrierung fehl.

Aber warum?!?!???? Kennt jemand das Problem und kann mir weiterhelfen?

Danke im Voraus

Gruß

MacHaggis


hier mal die wichtigsten Auszüge aus der sip.conf:
Code:
tcpenable=yes
tlsenable=yes
tlsbindaddr=10.20.106.213
tlscertfile=/etc/asterisk/cert.pem
tlscafile=/etc/asterisk/ca.pem
tlsdontverifyserver=yes

[100]
type=friend
context=main_srtp
callerid='alice' <100>
nat=yes
srtpcapable=yes
port=5061
transport=tls

cert.pem ist ein selbstsigniertes Zertifikat
und ca.pem der entsprechende Schlüssel
 
Zuletzt bearbeitet:
Kennt jemand das Problem und kann mir weiterhelfen?

Ergänze mal deinen sip-Eintrag [100] um insecure=port

Dann sollte es zumindest gehen, weil es wird nicht mehr auf port geprüft. Jeder Port ist zulässig.
 
Hallo kombjuder,

danke für deine schnelle Antwort. ich habe insecure=port in die SIP.conf mit aufgenommen.
Leider horcht Asterisk immer noch nicht an Ports 5061.
ich habe mal TLS disabled und nur über TCP laufen lassen, dass funktioniert.
Mit TLS jedoch meldet auch der SIP-Debugmodus erst etwas wenn Phonerlite es über einen normalen TCP-Port versucht. Dann meldet er natürlich:
'TCP' is not a valid transport for '101', we only use TLS! ending call. und schickt eine 403-Forbidden Meldung raus.

Da ich ja die SRTP-Development-Version von Asterisk nutze (siehe Link in erstem Eintrag),
könnte es sein, dass allgemein Module fehlen, die * für TLS benötigt, dass aus diesem Grund gar kein Modul vorhanden ist, dass an Port 5061 lauscht?!?

Bei "make menuselect" kann ich zum Beispiel nicht unter Resourcen "res_crypto" auswählen, obwohl "res_crypto.c" im Ordner "res" vorhanden ist.
Ich hab leider bisher nicht rausfinden können welche Module für TLS zuständig sind, aber in der Menüauswahl von "make menuselect" wird halt bei res_crypto ein Bezug zu Openssl angegeben, deshalb die Idee.
Hat die res_crypto.c was mit TLS zu tun? Wie bekomme ich die dann in die Auswahl zum kompilieren?
Wenn nicht, welche Module oder Verknüpfungen könnten sonst für TLS fehlen?

hier meine aktuelle sip.conf
Code:
[general]
context=default

udpbindaddr=0.0.0.0
tcpenable=yes
tcpbindaddr=0.0.0.0:5060 

tlsenable=yes
tlsbindaddr=0.0.0.0:5061

tlscertfile=/etc/asterisk/asteriskcert.pem 
tlscafile=/etc/asterisk/cakey.pem
tlsdontverifyserver=yes

[100]
type=friend
context=main_srtp
host=dynamic
callerid='alice' <100>
srtpcapable=yes
transport=tls
insecure=port

[101]
type=friend
context=main_srtp
host=dynamic
callerid='bob' <101>
srtpcapable=yes
transport=tls
insecure=port


Gruß MacHaggis
 
Lösung des Problems

Hallo zusammen,

für alle die jenigen, die das gleiche Problem plagt:

meine Vermutung, dass das fehlende Crypto-Modul das Problem ist, hat sich als richtig herausgestellt.
Dieses Modul ist für die kryptografischen Funktionen beim TSL-Support von * zuständig.
Das Problem bestand darin, dass OpenSSL nicht korrekt installiert bzw. verlinkt war, sodass * beim konfigurieren der make-files die SSL-Bibliotheken nicht gefunden und somit das Modul res_crypto.c nicht mit eingerichtet hat.
Somit konnte man bei der Modulauswahl über "make menuselect" auch dieses Modul erst gar nicht auswählen.

LÖSUNG:
Da ich LinuxFromScratch in einer Minimalkonfiguration nutze habe ich OpenSSL mit Patch und CA-Bundle über folgende Anleitung neu installiert:
http://www.linuxfromscratch.org/blfs/view/svn/postlfs/openssl.html
Für andere Distributionen schaut einfach auf der jeweiligen Supportseite nach der Installationsanleitung von OpenSSL nach.

Dannach muss Asterisk neu kompiliert werden:
./configure
make
make menuselect (kontrolliert ob unter Ressourcen res_crypto aktiviert ist)
make
Make install

Gruß

MacHaggis
 
Hi,

danke für den Hinweis auf die res_crypto, respektive das Auspüren via make menuselect!

Darauf lief es nämlich auch bei mir hinaus!


Mein Setup:

Ubuntu 8.10
Asterisk 1.6.0.9
Phoner Lite

Hatte Asterisk auch schon installiert und wie oben bereits erwähnt, wurde die res_crypto nicht mitgeladen!


Lösung bei mir:

-libssl-dev nachinstallieren

Danach Asterisk neu kompilieren!

Um festzustellen, ob Asterisk auch auf Port 5060/5061 lauscht, einfach folgende Befehle ausführen:


Code:
netstat -an | grep 5060
netstat -an | grep 5061

Das Ergebnis sollte dann in etwa so aussehen:


Code:
tcp   0     0    192.168.1.5:5060 0.0.0.0:*         LISTEN
udp  0     0     192.168.1.5:5060 0.0.0.0:*

tcp   0     0    192.168.1.5:5061 0.0.0.0:*         LISTEN


Gruß Slomo
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.