CCC Jabber Connection

Zertifikat Problem mit dem CCC Jabber

Update

Die technische Leitung des CCC Jabber Servers hat sich nun auch dazu entscheiden auf gültige Zertifikate umzusteigen. Daher ist dieser Blogpost überflüssig.


Einleitung

Der XMPP Server vom Chaos Computer Club wird unter einem Zertifikat von cacert.org betrieben. Das root Zertifikat wird allerdings von den meisten Browsern / Betriebssystemen nicht anerkannt. Dies stellt für die Erreichbarkeit des XMPP Servers ein Problem da.

Speziell Server die auf Datenschutz und Sicherheit ausgelegt wollen keine unverschlüsselten Verbindung.Im Folgenden möchte daher ich aufzeigen, welche Änderungen notwendig wären, um Debian mit den entsprechenden Zertifikaten auszustatten.

Betroffen sind damit speziell Prosody Server, die folgende Konfiguration eingestellt haben.

s2s_require_encryption = true
s2s_secure_auth = true

Damit ist die Voraussetzung einer Verbindung ein Zertifikat, welches vom Server anerkannt wird. Da auch keine unverschlüsselte Verbindung aufgebaut werden kann, wird die Verbindung blockiert. Prosody S2S Security

Ein Verbindungsaufbau würde im Log dann so aussehen.

mod_s2s	warn	Forbidding insecure connection to/from jabber.ccc.de
s2sin5637dae55f80	info	Incoming s2s stream jabber.ccc.de->magicbroccoli.de closed: Your server's certificate is invalid, expired, or not trusted by magicbroccoli.de

Es besteht die Möglichkeit Ausnahmen zu definieren, das Server trotz der Maßnahme, dass gültige Zertifikate präsentiert werden müssen, eine verschlüsselte Verbindung aufbauen können.

IMHO: Ich persönlich halte nichts davon Ausnahmen in einer Sicherheitsrichtlinie zu definieren. Daher wird es für den magicbroccoli.de Service keine manuellen Ausnahmen geben.

Root Zertifikate hinzufügen

Es wichtig die Integrität des Systems zu erhalten, daher werden keine Systemdateien geändert und Dateien nur an Stellen eingefügt, wo allein der Pfad schon erkennbar macht, dass diese eine manuelle Erweiterung ist.

/usr/local/share/ca-certificates

In diesem Verzeichnis sollten grundsätzlich keine Dateien oder Ordner vorhanden sein. Dieses Verzeichnis fügt für alle lokalen User Certificate Authorities ( im Folgenden nur noch CA genannt ) Zertifikate ein.

Hinweis
Das Hinzufügen eines CA Root Zertifikats kann das System einem erhöhten Risiko aussetzen. Es sollte sehr vorsichtig mit der Beglaubigung von wildfremden CAs umgegangen werden. Da euer System mit den folgenden Änderungen auch allen beglaubigten Zertifikaten der CA vertraut.

In diesem Verzeichnis ist ein Ordner zu erstellen mit dem Namen der CA.

sudo mkdir /usr/local/share/ca-certificates/cacert.org

Download der Zertifikate

sudo wget -P /usr/local/share/ca-certificates/cacert.org \
http://www.cacert.org/certs/root.crt \
http://www.cacert.org/certs/class3.crt

Aktualisieren des Zertifikat Bündels

Zum Schluss muss der Zertifikat Speicher des System noch aktualisiert werden. Hierfür wird das Verzeichnis ausgelesen und alle Zertifikate die dort vorhanden sind werden hinzugefügt.

sudo update-ca-certificates

Entfernen von CA Root Zertifikaten

VORSICHT !!
Falls es, weswegen auch immer, gewollt ist einer CA und deren Zertifikaten nicht mehr zu vertrauen, sind die Schritte wie folgt.

Es ist hier eine enorme Vorsicht geboten. Lieber sollte ein move Befehl verwendet werden, wenn es auch nur den Hauch eins Zweifels gibt. Außerdem sollte nur jemand der genau weiß was er tut überhaupt an den Zertifikaten des Systems arbeiten.

Im Folgenden am Beispiel von cacert.org.

  • Entfernen der Zertifikate/ des Zertifikat-Ordners aus
sudo rm -r /usr/local/share/ca-certificates/cacert.org/
  • löschen und neuerstellen der Symlinks
sudo update-ca-certificates --fresh

Mit diesen beiden Befehlen ist es möglich, jegliche CA aus dem trust store zu entfernen.