Dies ist eine alte Version des Dokuments!


Eigenes SSL-Zertifikat erzeugen

Vorwort

So ein Zertifikat benötigt man schneller, als man vielleicht glauben möchte. Es fängt an bei einer simplen https-Verbindung und endet beim verschlüsselten IMAP-Server. SSL (Secure Socket Layer, mittlerweile TLS) kann bei vielen Protokollen eingesetzt werden, Beispiele wären:

  • HTTP - Verbindung vom Browser zum Webserver
  • SMTP - Verbindung zwischen Mail-Client und Postausgangsserver
  • POP3 - Transport der E-Mails vom Mailserver zum Client
  • IMAP - Verwaltung von E-Mails auf dem Mailserver über Client

Diese Protokolle lassen sich alle (kompatible Server/Client-Software vorausgesetzt) mit SSL verschlüsseln. Das Protokoll HTTPS ist sicherlich am häufigsten im Einsatz, einige bekannte Seiten sind unter anderem Ebay, Paypal, GMX (das soll keine Werbung sein, mir fallen die nur gerade ein ;-)). Aber wer mehr darüber wissen möchte, kann es ja nachlesen, nun zum essentiellen Teil: dem Erstellen eines vollwertigen, selbst signierten Zertifikates.

System und Software

Natürlich klappt das Ganze auch unter Windows, nur tue ich mir das nicht an :-) Verwendet wurde:

  • Debian „Lenny“ 5.0
  • OpenSSL 0.9.8g 19 Oct 2007

Installation

Sofern nicht vorhanden, openssl nachinstallieren:

apt-get install openssl

Erstellung des Zertifikates

Alle verwendeten Optionen ließt man sich am besten in der man-Page von openssl durch! Die Dateiendungen verwende ich zur Unterscheidung der Dateitypen, da bei Verwechslung von Key, Zertifikat und signiertem Zertifikat nichts funktionieren wird :-P

Erzeugung des Schlüssels

Zu allererst benötigt man einen privaten Schlüssel, der mit dem Zertifikat fest verschweißt wird:

openssl genrsa -des3 -out example.key 4096

Manche Server-Dienste benötigen allerdings die unverschlüsselte Variante des Private Keys ohne Passwort. Solch eine Schlüsseldatei erstellt man folgendermaßen (so gut wie möglich schützen!):

openssl rsa -in example.key -out example.pem

Erzeugung des Zertifikates

Das (unsignierte!) Zertifikat erstellt man mit folgender Zeile:

openssl req -new -key example.key -out example.csr

Signierung des Zertifikates

Hier gibt es wiederum 2 Wege:

1. Die Selbstsignierung

D.h. man „unterschreibt“ das Zertifikat selber, dies hat aber zur Folge, dass bei Browsern, Mail-Clients etc. (je nach Einsatzgebiet) eine Warnmeldung erscheinen wird, die besagt, dass dem Zertifikat nicht vertraut werden kann:

Das kann man zwar wie folgt umgehen:

Jedoch ist bestimmt nicht jeder Benutzer des WWW in der Lage, diese „Fehlermeldung“ richtig zu deuten. Allerdings ist das eigenhändige Signieren die kostengünstigste Methode (siehe hier die horrenden Preise auf VeriSign.com ;-))

Für private Seiten, die z.B. nur den Administrationsbereich vor Man-In-The-Middle schützen möchten, ist diese Methode mehr als ausreichend:

openssl x509 -req -days 365 -in example.csr -signkey example.key -out example.crt

Das erstellte Zertifikat ist somit für ein ganzes Jahr gültig.

2. Freie Zertifizierungsstelle

Siehe dazu die sehr guten, vorhandenen Erklärungen:

Quellen

Kommentare