Home       Servicebereich  Projekte  Kontakt  


stunnel - Beliebige Protokolle verchlüsseln

Stunnel ist ein SSL-Wrapper, der beliebige TCP-Netzwerkkommuikation per SSL verschlüsseln kann. Stunnel übernimmt die Verschlüsselung und übergibt dem Programm die Klartext-Daten.

stunnel als Wrapper für einen Dienst

Im Server-Mode wird stunnel mit dem Schalter -l der Name des Programms übergeben, welches gestartet werden soll. Stunnel verbindet STDIN und STDOUT des Programm mit dem hiesigen Endpunkt der Verbindung. Dieses ist das gleiche Verfahren, wie es auch z.B beim Starten von Programmen über inetd angewandt wird.

Zertifikat für stunnel

Stunnel benötigt ein Zertifikats-/Schlüsselpaar in einem genau festgelegtem Format.

Zuerst wird der CSR mit Hilfe von openssl req erzeugt. Hierbei ist darauf zu achten, daß der Private-Key nicht verschlüsselt wird, da stunnel keine Möglichkeit bietet, das Passwort für den Key vom User abzufragen.

    openssl req -new -keyout st-key.pem -out st-csr.pem -days 365 -nodes

Dann wird der CSR von der CA signiert. Hier ist der -notext Schalter zu beachten, der die Ausgabe der Textinformationen des Zertifikats unterdrückt.

    openssl ca -notext -policy policy_anything -config ../ca/openssl.conf \
      -out st-cert.pem -infiles st-csr.pem 

Jetzt werden Key und Zertifikat in ein File geschrieben: Hier ist die Reihenfolge von Zertifikat und Key in der .pem Datei wichtig. Hier muß der unverschlüsselte Key an erster Stelle gefolgt vom signiertem Zertifikat (nicht dem CSR!). Zwischen Key und Zertifikat sowie Zertifikat und Dateiende wird eine Leerzeile eingefügt.

   (cat st-key.pem ; echo ""; cat st-cert.pem; echo "") > stunnel.pem

Dieses Zertifikat sollte die Berechtigungen von 0400 besitzen. Auf jeden Fall sollte es nur für den Eigentümer lesbar sein. Jetzt wird das Zertifikat/Keyfile nach /etc/ssl/certs/stunnel.pem kopiert, bzw. auf den in stunnel eincompilierten Pfad (stunnel -V). Alternativ kann der komplette Pfad zum File mit der Option -p beim Starten angegeben werden.

Aufruf über inetd

Für den Aufruf eines Programms an Port 2000 über inetd wird die folgende Zeile in die Datei /etc/inetd.conf geschrieben:


    2000 stream tcp nowait root /usr/sbin/stunnel -f \
      -p /etc/ssl/stunnel.pem -l /usr/local/sbin/daemon -- daemon arg1

Sollen dem Dienst Argumente übergeben werden, wird wie im Beispiel -- gefolgt vom Programmnamen und den Argumenten eingegeben.

stunnel im Client Mode

Stunnel kann auch auf Client-Seite genutzt werden, um eine verschlüsselte Kommunikation mit einem Client zu ermöglichen, der SSL nicht unterstützt. Der Aufruf von SSL ist dann folgendermaßen:

    stunnel -c -r <remotehost>:<port>

Auch hier erfolgt die Klartext-Kommunikation über STDIN und STDOUT. Falls eine Authentifizierung des Servers erwünscht ist, kann der Schalter -A PATH -v n mit PATH als Pfad zum CA-Zertifikat und n als Verifizierungslevel erfolgen. Die möglichen Werte für n werden in der manpage angegeben oder bei Aufruf von stunnel -h angegeben.


< zurück  | weiter >