Ich stand letztens vor dem Problem, eine TLS-verschlüsselte Verbindung zwischen meinem Server und Endgerät XY herstellen zu müssen.
Verschlüsselung ist schön und gut, aber leider meiner Ansicht nach für Laien und Semi-Laien wie mich viel zu schwer auf die Reihe zu bekommen. Noch dazu, wenn man auf einmal ein ominöses Zertifikat benötigt.Lesen kann man über das Thema im Internet recht viel, aber wie man es auf den aktuellen Bedarfs-Fall anwendet ist nie so wirklich klar, da sowohl die Anforderungen wie auch die Wege an's Ziel verschieden sind und noch dazu gefundene Informationen meist überholt sind oder anderes Vorwissen voraussetzen.
Im Folgenden will ich zeigen, wie ich mit Hilfe der Organisation CAcert ein Zertifikat für meinen Server erstellt habe. Einmal auf die Schnelle Art über das Schlüsselbund-Dienstprogramm und einmal per Kommandozeile, um noch zusätzlich einen Schlüssel generiert zu haben, den mir das Schlüsselbund-Dienstprogramm (zumindest auf den ersten Blick) nicht hergab.
CAcert.org
CAcert.org ist eine nichtkommerzielle Zertifizierungsstelle, die von einem gemeinnützigen Verein betrieben wird und kostenfrei X.509-Zertifikate ausstellt. Dies soll eine Alternative zu den kommerziellen Zertifizierungsstellen sein, die zum Teil recht hohe Gebühren für ihre Zertifikate erheben, und somit das Erstellen von Zertifikaten (und das Nutzen verschlüsselter Verbindungen) für Jedermann etwas attraktiver machen.Sowohl die Registrierung wie auch die Zertifikats-Ausstellung sind gratis, wobei man bei der Registrierung ein paar Daten über sich preis geben muss. Ein Zertifikat soll ja (datentechnisch) Vertrauen schaffen, also sollte man hier bei den Angeben nicht geizen.
Nach der Registrierung gilt es, sowohl seine E-Mail-Adresse, als auch seine Domain, auf die das Zertifikat ausgestellt wird, zu verifizieren. Dies geschieht über die Navigationspunkte E-Mail-Adressen > Hinzufügen und Domains > Hinzufügen rechts (die E-Mail-Adresse sollte selbstverständlich zur Domain passen!).Nachdem man den per E-Mail zugesendeten Link zur Bestätigung, dass einem die Adresse auch tatsächlich gehört, bestätigt hat, sind E-Mail und Domain im Account hinzugefügt.
Ich ärgerte mich schon, nicht viel früher ein Zertifikat erstellt und zu Hause auf HTTPS umgestellt zu haben, wenn dieser Prozess so einfach ist; stand dann aber auf einmal vor dem Problem, dass ich zum Erstellen eines Zertifikats eine Zertifikatsanfrage benötigte. Und diese durfte nicht einfach "Ich hätte gerne ein Zertifikat...bitte!" lauten.
Nein, eine Zertifikatsanfrage muss man ersteinmal erstellen.
Dies geht sowohl über das Schlüsselbund-Dienstprogramm, wie auch über den Kommandozeilenbefehl
openssl.
Zertifikatsanfrage (CSR) mit dem Schlüsselbund-Dienstprogramm erstellen
Im Programmmenü (da schaut man eigentlich nur relativ selten rein) Zertifikatsassistent > Zertifikat einer Zertifizierungsinstanz anfordern... auswählen. (Danke Google, dass Du mir geholfen hast, das zu finden!)Volà – man hat nun ein .csr-Dokument.
Zertifikatsanfrage (CSR) per Terminal mit openssl erstellen
Aufwändiger, aber flexibler.Zuerst erstellen wir ein Verzeichnis, in welchem wir unsere Arbeitsdateien und nachher den Schlüssel und das Zertifikat aufbewahren
Dann erstellen wir eine OpenSSL-Config-Datei.
Es geht auch ohne, aber dann werden beim Verwenden von openssl alle in der Config-Datei aufgeführten Informationen einzeln abgefragt. Etwas nervig, besonders wenn man zwischendrinnen oder am Ende bemerkt, dass sich irgendwo der Fehlerteufel eingeschlichen hat und man das Ganze ein weiteres Mal durchführen muss.
[ req ]
default_bits = 2048
default_keyfile = keyfile.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
prompt = no
output_password =
[ req_distinguished_name ]
C = <Dein Land, z.B. DE>
ST = <Dein Bundesland, z.B. Grossherzogtum Baden>
L = <Deine Stadt>
O = <Deine Organisation>
OU = <Deine Organisation>
commonName = <Deine bei CAcert eingerichtete DOMAIN.TLD, z.B. apfel-z.net>
emailAddress = <Deine bei CAcert eingerichtete E-Mail-Adresse>
[ req_attributes ]
challengePassword = <ein beliebiges Passwort>
in den unteren Bereichen bitte alles ausfüllen, was zwischen < ... > steht.
Am wichtigsten ist der commonName. Hier muss der qualifizierte (ohne Subdomain; z.B. apfel-z.net) Name des Servers stehen, wie er auch bei CAcert angegeben wurde.
Das als challengePassword angegebene Passwort brauchen wir später noch einige Male, daher sollte man es sich gut merken, ggf. in die Zwischenablage kopieren.Da es auch der Schutz des Zertifikates ist, sollte das Passwort nicht zu kurz sein.
Weiter geht's:
sudo openssl req -new -days 1825 -key /etc/ssl/server.key -out /etc/ssl/server.csr -config /etc/ssl/openssl.conf
sudo openssl rsa -in /etc/ssl/server.key –out /etc/ssl/private.key.decrypted
Hier wird jeweils das challengePassword abgefragt.
Ab hier geht das Spiel weiter, wie bei der obigen Schlüsselbund-Dienstprogramm-Lösung: Zertifikatsanfrage aus der eben erstellten .csr-Datei herauskopieren, bei CAcert.org ein neues Server-Zertifikat anfordern und die Zertifikatsanfrage in das Textfeld einfügen, das darauf erstellte Zertifikat in einer neuen Textdatei als .crt abspeichern. Fertig.
Zertifikat erneuern
Leider laufen Zertifikate aus und müssen regelmäßig erneuert werden.Dies ist nun kein ganz so großer Akt mehr: Bei CAcert.org einloggen, Server-Zertifikate anzeigen in der Navigation rechts auswählen, das gewünschte Zertifikat auswählen und auf den Button "Erneuern" klicken.
Erstellt am: 11.12.2014 unter den Kategorien Selbstgehostet Online . | Kommentieren |