Kostenloses SSL Zertifikat bei StartCom StartSSL erstellen
SSL, inzwischen eigentlich auf den Namen TLS (Transport Layer Security; dt. Transportschichtsicherheit) hörend, ist eine gängige Methode im Internet Datenübertragungen abzusichern. Wie in meinem Blog in verschiedenen Tutorials bereits erklärt, benötigt man ein SSL Zertifikat, das die Verbindung sichert. Man kann sich dieses selbst erstellen und signieren. Das ist kostenlos und schnell erledigt. Der Nachteil an dieser Methode ist, dass Browser und andere Clients immer fragen, ob man dem Zertifikat wirklich vertrauen möchte, da man bei selbst signierten Zertifikaten nicht zwingend von dessen Echtheit ausgehen kann.
Alternativ kann man sich SSL Zertifikate von Unternehmen ausstellen lassen, denen von Betriebssystemen, Browsern und weiteren Clients vertraut wird. Dabei sind Zertifikataussteller wie Thawte, RapidSSL, GEO Trust, GlobeSSL, Comodo oder VeriSign anzuführen. Ab zehn Euro bis hin zu mehreren Tausenden pro Jahr ist das Spektrum der Angebote bei den benannten Anbietern groß.
Beispiel: Selbst signiertes SSL Zertifikat erstellen
Mit den folgenden Befehlen können wir auf einem Rechner mit OpenSSL ein selbst signiertes SSL Zertifikat erstellen, das 365 Tage gültig ist. Der Ausdruck hostname sollte durch die Domain ersetzt werden, für die das Zertifikat bestimmt ist. Dabei werden beim vorletzten Befehl mehrere Fragen gestellt. Minimal sollten wir bei Country Name unser Länderkürzel z.B. DE und bei Common Name die Domain, unter der das SSL Zertifikat verwendet wird, angeben. Weitere Angaben schaden an dieser Stelle nicht.
openssl genrsa -out hostname.key 4096
openssl req -new -sha256 -key hostname.key -out hostname.csr
openssl x509 -req -sha256 -days 365 -in hostname.csr -signkey hostname.key -out hostname.crt
Wer nach einer kostenlosen Alternative sucht, die jedoch ohne Nachfrage des Clients akzeptiert wird, sollte einen Blick auf StartSSL werfen. Diese bieten mit StartCom StartSSL Free ein SSL Zertifikat für ein Jahr an, das gänzlich kostenlos ist. Wie man im Vergleich zu anderen StartSSL Produkten sieht, bietet es einige Funktionalitäten nicht an. Jedoch akzeptieren die meisten (modernen) Anwendungen das Zertifikat, wie dem Forum des Unternehmens zu entnehmen ist. Für eine Domain auf einem Webserver wie Apache2 oder Nginx oder E-Mail-Verschlüsselung ist es also völlig ausreichend.
Kostenloses SSL Zertifikat bei StartSSL erstellen
Zunächst müssen wir uns auf der etwas unübersichtlichen Webseite von StartSSL einen Account anlegen. Dies können wir im Control Panel über den Button Sign-up bewerkstelligen. Anschließend müssen wir unsere Adresse, Telefonnummer und E-Mail Adresse angeben.
Nach der Anmeldung erhalten wir per E-Mail einen Code, den wir auf der Seite nach Absenden der Registrierung angeben müssen, um diese abzuschließen. Anschließend werden die angegebenen Adressdaten von einem Mitarbeiter geprüft. Das kann je nach Tageszeit einige Stunden dauern. Wenn die Prüfung abgeschlossen ist und die Daten angenommen wurden, erhält man eine zweite E-Mail mit einem Aktivierungslink, auf den wir klicken müssen und in diesen einen weiteren Code, der in der E-Mail enthalten ist, eingeben.
Nun müssen wir im nächsten Schritt Generate Private Key ein Zertifikat generieren, mit dem sich der Browser bei StartSSL in den angelegten Account anmelden kann. Die Voreinstellung 2048-bit ist in Ordnung, sodass wir mit einem Klick auf Continue fortfahren und anschließend das Zertifikat installieren lassen können.
Nachdem wir die Registrierung nun geschafft haben, können wir im Control Panel von StartSSL auf den Reiter Validations Wizard gehen. Dort wählen wir Domain Name Validation und geben im nächsten Schritt die Domain an, für die wir ein SSL Zertifikat erstellen möchten. Im dritten Schritt müssen wir wählen, an welche der drei standard E-Mail Adressen ein Verifikationscode geschickt werden soll. Nachdem wir den Code per E-Mail erhalten haben, müssen wir diesen im letzten Schritt auf der Webseite von StartSSL eintragen.
Dies ist nötig, da StartSSL überprüfen muss, ob die Domain, für die wir später ein SSL Zertifikat erstellen, auch wirklich uns gehört.
Das Account angelegt und die Domain verifiziert. Nun sind alle vorbereitenden Schritte geschafft und wir können zum Erzeugen eines SSL Zertifikats übergehen. Dazu wählen wir den Reiter Certificates Wizard an und wählen dort die Art des SSL Zertifikats, das wir ausstellen lassen möchten. Im Folgenden werden die Schritte exemplarisch für ein Web Server SSL/TLS Certificate erklärt, das wir für einen Webserver wie Apache2 oder Nginx benötigen.
Zunächst müssen wir nun einen Private Key erzeugen. Jedoch ist der Private Key ein wichtiger Schlüssel, der nicht herausgegeben werden sollte, weshalb wir diesen nicht auf der Webseite, sondern selbst erzeugen sollten. Wir erzeugen den Private Key mit einer Länge von 4096 Bit mittels folgenden Befehls auf einem Rechner, der OpenSSL installiert hat. Anschließend, mit dem zweiten Befehl, erzeugen wir einen Certificate Request, der die nötigen Informationen für das Zertifikat enthält. Dabei sollten wir die gestellten Fragen wahrheitsgemäß beantworten. Bei Common Name ist dabei die Domain anzugeben, für die das Zertifikat erstellt werden soll und ein Passwort sollte nicht vergeben werden. Der Ausdruck hostname sollte dabei durch die Domain, für die wir das Zertifikat erstellen, ersetzt werden.
openssl genrsa -out hostname.key 4096
openssl req -new -sha256 -key hostname.key -out hostname.csr
Auf der Webseite von StartSSL klicken wir auf Skip und werden anschließend aufgefordert den Certificate Request einzutragen. Dazu kopieren wir einfach den Inhalt der hostname.csr in das angegebene Feld.
Im nächsten Schritt müssen wir nun eine der zuvor verifizierten Domains auswählen, für die wir ein SSL Zertifikat erstellen möchten. Wir müssen nun noch eine Subdomain angeben, die ebenfalls von dem Zertifikat unterstützt werden soll. Im Normalfall sollte man an dieser Stelle www angeben, falls das Zertifikat nicht für eine spezifische Subdomain ausgestellt werden soll. Darauf folgend müssen wir unsere Angaben nochmals bestätigen. Ist das erledigt, so erhalten wir erneut im Browser die Meldung, dass das Zertifikat beantragt wurde und wir per E-Mail benachrichtigt werden, wenn dieses ausgestellt ist.
Haben wir die E-Mail erhalten müssen wir im Control Panel unter Tool Box und anschließend Retrieve Certificate das kostenlose SSL Zertifikat abholen, das in einem Textfeld angezeigt wird. Dessen Inhalt legen wir in einer Datei namens hostname.crt ab (hostname sollte erneut ersetzt werden).
Wir haben nun den Private Key und das SSL Zertifikat. Des Weiteren brauchen wir aber noch die ca.pem und sub.class1.server.ca.pem Datei von StartSSL, welche wir herunterladen können.
Download-Links
- ca.pem: http://www.startssl.com/certs/ca.pem
- sub.class1.server.ca.pem: http://www.startssl.com/certs/sub.class1.server.ca.pem
Was ist in welcher Datei enthalten?
- hostname.key: Zertifikatschlüssel/Private Key
- hostname.crt: SSL Zertifikat
- ca.pem: Intermediate Zertifikat
- sub.class1.server.ca.pem: Intermediate Zertifikat für die Subdomain
Abschließend müssen wir nun das SSL Zertifikat in der gewünschten Anwendung einbauen. Wie das für Apache2 und Nginx geht, wird in den verlinkten Seiten von StartSSL erklärt. Außerdem findet sich im Blog von Kuketz IT-Security ein Artikel zum Thema Cipher-Suiten, der ratsam zu Lesen ist, um den Webserver sinnvoll für das SSL Zertifikat zu konfigurieren. Für andere Anwendungen findet man im Normalfall mit einer kurzen Suche entsprechende Anleitungen.
Geschafft! Das kostenlose SSL Zertifikat für eine Domain wurde für ein Jahr ausgestellt und ist einsatzbereit. Damit wünsche ich eine sichere Nutzung der eigenen Anwendung!
Dieser Artikel wurde am 04. Juni 2015 überarbeitet.
27 Kommentare. Hinterlasse eine Antwort
Super gemacht. Habe es vorher schon oft mit den englischen anleitungen versucht. Nun hats geklappt! Vielen dank.
Guten Tag & vielen Dank für die Erklärungen – ich hatte kürzlich bei meinem hoster nachgefragt und wegen der hohen Kosten Abstand genommen. Nun rückt das Projekt wieder auf der ‚to-do-Liste‘ nach oben….
Danke für den Artikel!
Ich danke fürs Lesen 🙂
SSL-Zertifikate kann man doch gewöhnlich einfach verlängern. Geht das hier wirklich nicht? Dann müsste man diese ganze Prozedur ja jedes Jahr machen 🙂
Und gleich für mehrere Jahre (z.B. 5 Jahre) machen geht nicht?
Das sind eben die Limitierungen bei dem kostenlosen Angebot…
Gute Anleitung, wer noch eine Anleitung für die Konfiguration des Nginx mit SSL sucht kann meine Anleitung verwenden: https://sbaerlocher.ch/2014/02/einrichten-eines-ssl-zertifikat/
Eine Verständnisfrage:
Was passiert wenn das eine Jahr rum ist? Wird das Zertifikat kostenplfichtig oder verfällt es oder muss es erneuert werden?
Das Zertifikat läuft aus und zu musst ein Neues erstellen.
Ist es auch möglich sich ein kostenloses Zertifikat für ein Host von noip.com registrieren zu lassen?
Ob es bei StartCom auch für Subdomains geht müsstest du einfach mal ausprobieren. Ich denke aber, dass das kein Problem darstellen sollte.
Leider nicht.
Zitat:
„You must be the owner of the top-level domain, sub domains are not supported.“
Ich habe das nun so eingerichtet wie beschrieben, hat wunderbar funktioniert. Nur ein Problem: Immer wenn ich nun Apache restarten will, muss ich das Zertifikat-Passwort eingeben. Bekommt man das irgendwie weg? Ist nämlich blöd, wenn die Maschine durch einen Firstlevel-Supporter im Rechenzentrum rebootet wird, der weder Zugriff auf die Shell hat noch das Passwort kennt.
Keine zusätzliche Passphrase verwenden? 😉
Ich glaube das wurde in der Anleitung vergessen. Das erzeugte ssl.key File ist ja jetzt mit Password encrypted. Bei einem Apache Neustart müsstest du jedes mal das Passwort angeben.
Du kannst aber über die StartSSL Toolbox – Decrypt Private Key – eine ssl.key Datei erstellen die nicht mit Passwort versehen ist. Also die ssl.key Datei wieder zurück wandeln.
oder einfach: sudo openssl rsa -in .key -out .key
Die neue Keyfile benötigt dann kein Passwort mehr. Nicht vergessen: mit chmod 600 und chown root:root gegen unbefugten Zugriff abzusichern.
chmod 400 ist noch sicherer, es muss nur lessbar sein. 😉
Hallo,
ich betreibe zu Hause owncloud auf meinem raspberrypi. Diesen möchte ich nicht ins Internet bringen und höchstens über VPN Tunnel von unterwegs zugreifen. Nun beschweren sich die Browser und Apps ständig über mein selbstsigniertes SSL-Zertifikat…es wird auch vor Man in The Middle Attacken gewarnt. Gibt es eine Chance ein offizielles Zertifikat für eine private IP-Addresse zu bekommen oder bleibt mir hier nur das Selbstsignieren und der Versuch die Clients zur Akzeptanz des Zertifikats zu überreden?
Vielen Dank im Voraus
Martin Guth
Selbst signiertes Zertifikat, ein kostenloses Zertifikat von am einfachsten StartSSL oder eines kaufen (ab ca. 10€/Jahr). Diese Möglichkeiten gibt es.
Bei den Browsern müsstest Du doch angeben können, dass sie dieses Zertifikat akzeptieren sollen; „Ausnahmeregel hinzufügen“ oder sowas in die Richtung!?
Und für Android gibt es die App CADroid, die hilft, selbstsignierte Zertifikate zu importieren: http://cadroid.bitfire.at/
Gibt es außer StarCom noch weitere SSL-Free-Zertifikat Hersteller?
Da ich ewig nach einer richtig guten Anleitung gesucht habe ein „wirkliches“ openSSL Zertifikat zu erstellen, möchte ich es für euch posten:
SSL – fortgeschritten:
http://pki-tutorial.readthedocs.org/en/latest/advanced/index.html
Sicherheit SSL Zertifikat testen:
https://www.ssllabs.com/ssltest/index.html
Außerdem hier der Code um das eigene Zertifikat sicherer zu machen (einzufügen in die NGINX-Conf Datei):
# SSLv3 deaktivieren, http://en.wikipedia.org/wiki/Secure_Sockets_Layer#SSL_3.0
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# Schutz gegen Ausspaehung, http://www.kuketz-blog.de/nsa-abhoersichere-ssl-verschluesselung-fuer-apache-und-nginx/
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES256-GCM-SHA384:DHE-DSS-AES256-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256:AES128:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
ssl_prefer_server_ciphers on;
Alle Angaben ohne Gewähr 🙂
Hallo,
ich würde gerne ein Mailzertifikat erzeugen und von StartCom signieren lassen. Leider bekomme ich immer die Meldung, daß diese Mailadresse schon validiert ist.
Ich würde aber gerne, wie in Step 6 empfohlen, den privaten Schlüssel selbst erstellen und nur den Request an StartCom schicken. Wie macht man das für ein Mailzertifikat?
Danke und Gruß
Stefan
Bzgl. E-Mails würde ich anstatt S/MIME mal den Standard OpenPGP ausprobieren.
Ahoi Jan & Leser
Inzwischen gibt’s gar 3-Jahres-Zertifikate via WoSign mit Cross-Sign von Startssl. Die Erstellung ist noch einmal einfacher gestaltet als bei Startssl selbst. 🙂 https://schroeffu.ch/2015/09/kostenlose-ssl-zertifikate-mit-3-jahren-gueltigkeit-erstellen-lassen/
[…] eines selbst signieren, was Nachteile mit sich brachte, erhielt dieses mit vielen Restriktionen kostenlos bei StarCom oder musste sich ein solches für eine teils nicht unerhebliche Jahresgebühr bei einer […]
Wie funktioniert das zusenden des Codes per email über die 3 email Adressen ? Muss ich da eine neue email Adresse erstellen lassen auf dem Namen ?