[Gelöst] TLS und selbstsignierte Zertifikate

wuesten.fuchs

Neuer User
Mitglied seit
4 Sep 2008
Beiträge
83
Punkte für Reaktionen
2
Punkte
8
Hallo zusammen,

ich habe hier ein Snom D765, das ich gerne mit TLS (und SRTP) an meinen Asterisk 18.4.0 anbinden möchte.

Die dafür benötigten Zertifikate habe ich selbst erzeugt, und zwar mit einer root CA und einer intermediate CA:
  • Root-CA
  • Intermediate VoIP CA
  • Asterisk Server certificate: sip1.example.com
Für das Snom liegen ein öffentliches Zertifikat und ein privater Schlüssel vor:
  • Public phone certificate: 23.example.com
  • Private phone key: 23.example.com
So weit, so gut.

Was ich nicht verstehe ist, welches Zertifikat ich im Telefon hinterlegen soll. Klassischerweise würde ich sagen, eine Zertifikatskette aus:
  • Public phone certificate mit intermediate CA und root CA (damit die Zertifikatskette vollständig ist)
  • Private phone key.
Alle Zertifikate sind in DER umgewandelt. Das public phone certificate, die intermediate CA und die root CA kann ich über das Web-Interface des Snoms hochladen; unter "Custom certificates" werden sie mir auch angezeigt.

Den private phone key kann ich nicht hochladen; im Log steht:
Code:
    May 28 12:58:56.806  [ERROR ] TLS: Cannot read der cert
    May 28 12:58:56.807  [ERROR ] TLS: Failed to trust uploaded cert
    May 28 12:58:56.807  [ERROR ] PHN: Could not add Certificate

Leider bekomme ich das Snom im Asterisk nicht registriert. Am Snom wird im Display angezeigt:
Eine gesicherte Verbindung wurde zurückgewiesen da ihr nicht vertraut wird. Fügen Sie das Zertifikat im Webinterface unter Zertifikate hinzu, um der Identifikation zu umgehen.
Im Asterisk zeigt er mir bei einem Registrierungsversuch:
Code:
pjproject: <?>:                        SSL SSL_ERROR_SSL (Handshake): Level: 0 err: <336151571> <SSL routines-ssl3_read_bytes-sslv3 alert unsupported certificate> len: 0 peer: 10.41.0.1:49518

Was mache ich falsch?
 
Welches Zertifikat soll ich im Snom hinterlegen?
Verbinde das Snom einmalig mit Deinem Digium Asterisk. Dann erscheint im Web-Interface des Snom unter Zertifikate → Unbekannte Zertifikate das Entity-Zertifikat Deines Digium Asterisk auf (bei Dir: Asterisk Server certificate). Das akzeptierst Du. Fertig. Klappt das?
Welches Zertifikat sollte man in einem VoIP/SIP-Telefon üblicherweise hinterlegen?
Üblicherweise hinterlegst Du einen Trust-Anchor, was normalerweise eine Ausgabestelle ist, was normalerweise das Wurzel-Zertifikat ist (bei Dir: Root-CA). Das lädst Du im Web-Interface des Snom unter Zertifikate → Eigene Zertifikate. Wenn Du aber obiges gemacht hast, brauchst dies nicht mehr zu machen.
Public phone certificate mit […] root CA
Das macht man nur dann, wenn man TLS-Mutual-Authentication braucht, also das Telefon statt einem Benutzername/Passwort ein Zertifikat vorweisen soll, um hineingelassen zu werden. Digium Asterisk ist in dem Punkt ganz schlecht. In ein paar wilden Anleitungen steht, man soll das so machen. Aber wirklich funktionieren tut das gar nicht. Auch weiß ich gar nicht, ob Snom das bietet. Willst diesen Weg wirklich gehen? Dann schaue ich mir das mal an.
Die dafür benötigten Zertifikate habe ich selbst erzeugt, und zwar mit einer root CA und einer intermediate CA
Eigentlich brauchst Du kein Intermediate- und auch kein extra Root-Zertifikat. Das Entity-Zertifikat selbst kann ein Root-Zertifikat sein. Für daheim bzw. die eigenen Server vollkommen ausreichend (außer Du möchtest Revoken können ohne alle Endgeräte neu zu konfigurieren).
Was mache ich falsch?
Falsch ist hier relativ. Du kannst Dir Arbeit vermeiden indem Du Dir ein Zertifikat bei RapidSSL kaufst oder Dir ein kostenloses bei Let’s Encrypt holst. Deren Ausgabestellen sind dem Snom bekannt. Dadurch musst Du überhaupt nichts machen. RapidSSL kostet keine 20€ im Jahr und ist in wenigen Minuten bestellt. Allein den Thread hier zu erstellen war „teurer“. Nicht falsch verstehen, wir helfen gerne. Aber ich würde mir nicht die Mühe mit der Installation machen, wenn man ein Zertifikat so günstig haben kann.
 
Zuletzt bearbeitet:
Hi sonyKatze,

danke für deine Hilfe. Ich antworte dir mal unten.
Üblicherweise hinterlegst Du einen Trust-Anchor, was normalerweise eine Ausgabestelle ist, was normalerweise das Wurzel-Zertifikat ist (bei Dir: Root-CA). Das lädst Du im Web-Interface des Snom unter Zertifikate → Eigene Zertifikate. Wenn Du aber obiges gemacht hast, brauchst dies nicht mehr zu machen.
Ah - das war mein Denkfehler. Klar, Snom braucht nur einen Trust Anchor, bspw. das Root-Zertifikat, um das von Asterisk präsentierte Server-Zertifikat verifizieren zu können. Eine Anmeldung über TLS ist nicht nötig (und auch nicht beabsichtigt).

Wie auch immer; der Fehler lag sowieso auf meiner Seite. Kurz zur Erklärung: Ich verwende Asterisk seit 1.8 produktiv. Insgesamt sind ca. 15 SIP-Clients vorhanden, bisher hauptsächlich Snom 3X0. Dieses Setup läuft mit Asterisk 13 seit Jahren weitgehend unverändert.
Nun steht eine Modernisierung der VoIP-Infrastruktur an. Dabei migrieren wir u.a. von Asterisk 13 auf Asterisk 18 mit teilweise aktualisierter Konfiguration und Anforderungen. Die Deskphones werden auf Snom D7XX migriert. Ich bin gerade bei den ersten Integrationstests und den Anfang hat ein Snom D765 zum Testen gemacht (wird wohl das einzige Snom D765 sein, da EOL bereits absehbar ist).

Es ist bereits eine umfangreiche PKI-Infrastruktur mit mehreren Intermediates und ca. 200 Zertifikaten vorhanden. In diese PKI sollen nun auch die VoIP-Clients eingefügt werden, wofür ein neues "VoIP"-Intermediate-Zertifikat eingerichtet wurde. Dass die PKI selbstsigniert ist, stellt für uns kein Problem dar (ist in diesem Setup sogar ein Sicherheitsgewinn...), da wir sie nur im internen Netz verwenden und die volle Kontrolle über alle Hosts und Zugänge haben. Bisher läuft dieses Setup auch problemlos.

Das Problem lag nun darin, dass ich Asterisk versehentlich ein Client-Zertifikat zugeteilt habe, statt einem Server-Zertifikat. Genauer: Asterisk bekam ein Zertifikat, dem ich als X509v3 Extended Key Usage "TLS Web Client Authentication" gab. Richtig wäre aber gewesen "TLS Web Server Authentication".

Habe jetzt den Fehler korrigiert und im Snom einfach nur das Root-Zertifikat hinterlegt, und schon klappt alles.

Nochmals danke für deine Antwort, die mich letztlich auf die richtige Spur gebracht hat! Ich markiere den Thread als "Gelöst".
 
  • Like
Reaktionen: sonyKatze
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.