StartSSL ist die wohl günstigste Zertifizierungsstelle, die man haben kann. Über einen „Free”-Account kann man sich einfache Zertifikate für sämtliche Domains ausstellen lassen, über die man verfügt. „Einfach heiß”t: Ein Zertifikat, das für eine Domain und eine Subdomain gültig ist. Jedes dieser Zertifikate ist für 1 Jahr gültig und kann danach durch ein weiteres ersetzt werden. Wer erweiterte Zertifikate nutzen will, die z.B. Wildcards (*.domain.tld) unterstützen oder persönliche Daten des Inhabers beinhalten, greift zu den (verhältnismäßig) günstigen Class II Zertifikaten.
Wenn man sich schon einmal ein Zertifikat ausstellt, achtet man besonders auf die Sicherheit und die Zukunftstauglichkeit, denn das Widerrufen eines bereits ausgestellten, noch aktiven Zertifikats kostet 40$. Ich habe mir vor ein paar Tagen einen Class II Account geholt, um Wildcards in Zertifikaten nutzen zu können. Es wäre ärgerlich, zusätzlich zur Einrichtungsgebühr von ca 60$ später auch noch die Gebühren für ein neues Zertifikat zu zahlen, welches vor Ablauf zurückgerufen werden soll.
Einen Private Key generieren
Das Anfordern eines Zertifikats von einer CA (Certificate Authority) wie StartSSL beginnt immer mit der Generierung eines streng geheimen Private Keys. Da dieser die Sicherheit der verschlüsselten Verbindung später maßgeblich beeinflussen wird, soll an dieser Stelle nicht an der Schlüssellänge gespart werden. Mindestens 2048 Bit lang sollte der Schlüssel sein. Weil ich es kann und dem üblichen Standard nicht vertraue, gönne ich mir aber einen 4096-Bit langen Schlüssel – also doppelt so lang. Das gilt heute als ziemlich unknackbar.
Der Schlüssel „privkey.pem” wird mit dem entsprechenden OpenSSL-Befehl generiert:
mkdir certs && cd certs openssl genrsa -out privkey.pem 4096
Ein Passwort kann man angeben, muss man aber nicht. Es ist oft sinnvoller, den Key nicht mit einem Passwort zu sichern, weil sonst bei jedem Programmstart, welcher den Schlüssel ausliest, das Passwort angegeben werden muss. Der Private Key wird später auf dem Server durch die UNIX-rechte ausreichend geschützt. Wenn man den Key Zuhause auf dem Rechner oder USB Stick als Backup behalten will, ist es sinnvoll, ihn z.B. via PGP zu verschlüsseln.
Certificate Signing Request erzeugen
Als nächstes wird eine .csr Datei generiert, eine sog. „Certificate Signing Request”. Der Generator wird mit dem Private Key und einigen Angaben zum Zertifikat gefüttert:
openssl req -new -key privkey.pem -out cert.csr -sha512
Bei StartSSL ist es ziemlich egal, welche Daten man hier angibt, da diese von StartSSL nicht ausgewertet werden. Andere CAs könnten sich hier anders verhalten – Vorsicht also! Besonders auf den „Common Name” sollte man achten. Hier wird die Domain eingetragen, für die das Zertifikat gültig sein soll. Aber wie gesagt – bei StartSSL werden diese Felder nicht genutzt, sondern später über ein Webinterface vom Nutzer abgefragt.
Anfrage bei StartSSL einreichen
Sobald die Zertifikatsanfrage erstellt ist, wird in das StartSSL Webinterface gewechselt und der „Certificates Wizard” gestartet. So geht es weiter:
- Art des Zertifikats wählen: In den meisten Fällen „Webserver / SSL /TLS”.
- Es wird angeboten, dass StartSSL einen Private Key generiert. Dieser Funktion sollte man nicht vertrauen. Deshalb haben wir vorher den Key selbst generiert. Dieser Schritt wird mit „Skip” übersprungen
- Nun wird in ein Textfeld der Inhalt der .csr Datei eingetragen. Öffnet die Datei auf eurem Rechner und kopiert den Inhalt in des Textfeld.
- Es folgt eine Bestätigung
- Nun könnt ihr eine Hauptdomain für euer Zertifikat auswählen
- Im nächsten Schritt habt ihr die Möglichkeit, weitere Domains oder Subdomains zum Zertifikat hinzuzufügen, (oder wenn ihr Class II zertifiziert seid, eine Wildcard einzutragen)
- Die angegebenen Domains werden euch zur Sicherheit noch einmal angezeigt
- Das Public Certificate wurde generiert. Evtl. sind weitere Überprüfungen nötig und ihr bekommt einen entsprechenden Hinweis angezeigt. Das war bei mir bisher der Fall, wenn ich Wildcards eingetragen habe. Das Zertifikat bekommt ihr dann erst mit etwas Verzögerung.
Nehmt euch dann den Code für das öffentliche Zertifikat und speichert ihn in eine Datei „public.pem”. Dieses öffentliche Zertifikat sollte zusammen mit dem zugehörigen Private Key gut aufbewahrt werden. Vor allem der Private Key sollte unbedingt gesichert werden. Ohne ihn ist keine Verschlüsselung mehr möglich, und auch StartSSL kann euch bei einem Verlust nicht helfen.
Intermediate Zertifikat herunterladen
Was jetzt noch fehlt, ist das sog. Intermediate Certificate. Es handelt sich dabei um ein öffentliches Zertifikat von StartSSL, das von Webserver später mitgeliefert wird und bestätigt, dass euer Zertifikat von StartSSL stammt. je nach Klassifizierung eures Account (Class 1, 2, oder sogar 3) sind unterschiedliche Zertifikate herunterzuladen.
- Class 1: (Free Account): [Direktlink zum Download]
- Class 2: [Direktlink zum Download]
- Class 3: [Direktlink zum Download]
Ihr habt jetzt also 4 verschiedene Dateien: Den Private Key, die .csr Zertifizierungsanfrage, das öffentliche Zertifikat und das Intermediate Zertifikat. Bis auf die Zertifizierungsanfrage wird nun alles auf den Server hochgeladen. (z.B. über den Filebrowser und SFTP)
Ich empfehle euch, auf dem Server folgende Verzeichnisstruktur mit den angegebenen Rechten zu nutzen (Eigentümer soll immer root sein!):
- /etc/myssl/startssl/
- domain1/
- privkey.pem (600)
- public.pem (644)
- domain2/
- sub.class1.server.ca.pem (644)
- domain1/
Zertifikate in die Webservr Konfiguration einbinden
Im nächsten Schritt müssen die Zertifikate im Webserver eingerichtet werden. Wie das mit dem beliebten Apache2 Webserver funktioniert, erfahrt ihr in einem anderen Beitrag:
Apache2: SSL-verschlüsselte Verbindungen ermöglichen (https)