Erstellen von eigenen SSL-Zertifikaten
Übersicht
Einige Dienste auf dem c't-Debian-Server verwenden SSL um Daten gesichert über das Netzwerk/Internet? zu übertragen. Dazu gehören u.a. das Webinterface der Endian-Firewall, OpenVPN oder ggf. SSL-verschlüsselte E-Mail Dienste (POP3, SMTP, IMAP). Ein wesentlicher Teil des Sicherheitskonzepts von SSL besteht darin, dass sich ein Server erst einmal gegenüber dem Client mit einem Zertifikat ausweisen muss, bevor überhaupt eine Verbindung zustande kommt. Denn was nützt die sicherste Verschlüsselung, wenn man beim Aufbau der Verbindung nicht sicher weiß, ob die Gegenstelle wirklich "echt" ist, oder durch ein gefälschtes System ersetzt wurde.
Wenn man z.B. im Webbrowser das Homebanking-Portal seiner Bank aufruft, dann könnte diese Seite ja durch eine ähnlich aussehende Kopie eines Angreifers, welcher sich irgendwo zwischen dem eigenen PC und der Bank eingeklinkt hat, ersetzt worden sein. Um diesen Angriff zu erschweren, gibt der Webbrowser eine Warnung aus, wenn er dem SSL-Zertifikat der Gegenstelle nicht vertraut. Damit man nicht jedes vertrauenswürdige Zertifikat "per Hand" im Browser eintragen muss, wird dieser bereits vom Hersteller mit einer Liste von vertrauenswürdigen Zertifizierungsstellen ausgeliefert. Der Browser vetraut dadurch sämtlichen Zertifikaten, die von einer dieser voreingestellten Zertifizierungsstellen unterschrieben wurden.
Es gibt verschiedene Möglichkeiten, an Zertifikate für den eigenen Bedarf zu kommen:
- Beantragung bei einer allgemein anerkannten Zertifizierungsstelle (kostenpflichtig, evtl. aufwändige Prüfung der eigenen Identität)
- Einrichtung einer eigenen Zertifizierungsstelle
- "Self-signed" Zertifikate
Die erste Möglichkeit dürfte für den privaten Gebrauch i.d.R zu aufwendig bzw. zu teuer sein. Schließlich ist man normalerweise gar nicht darauf angewiesen, dass ein Zertifikat von einer weltweit anerkannten Zertifizierungsstelle stammt. Für die meisten Zwecke reicht es vollkommen aus, wenn "nur" man selbst einem Zertifikat / einer Zertifizierungsstelle vertraut.
Wer jemals nur ein einziges Zertifikat benötigt, ist mit der dritten Methode ausreichend versorgt. Das Webinterface der Endian-Firewall erstellt z.B. beim ersten Start automatisch eine Zertifikatsanforderung und unterschreibt diese auch gleich selbst. Wenn man dieses Zertifikat daraufin in den Browser importiert, werden zukünftig keinerlei Warnmeldungen mehr angezeigt.
Einrichtung einer eigenen Zertifizierungsstelle
Wer mehrere Zertifikate braucht (z.B. für die bereits oben genannten Dienste), richtet sich am besten eine eigene Zertifizierungsstelle ein. Die vorgehensweise wurde bereits 2002 in einem c't-Artikel beschrieben. Da mir die ganzen OpenSSL-Kommandos für den gelegentlichen Gebrauch viel zu kryptisch sind, verwende ich TinyCA, welches eine relativ einfach zu bedienende GUI mitliefert. TinyCA wird zwar scheinbar seit einiger Zeit nicht mehr weiterentwickelt, ist aber trotzdem z.B. bei Debian oder openSUSE dabei.
Je nach individuellen Sicherheitsbedürfnis sollte man die Zertifizierungsstelle nicht unbedingt auf einem Rechner installieren, der mehr oder weniger direkt an das Internet angeschlossen ist. Das Problem hierbei besteht darin, dass die damit unterschriebenen Zertifikate teilweise Zugangsberechtigungen zu dem eigenen PC bzw. Netzwerk sind. Besonders OpenVPN wird häufig so konfiguriert, dass jedes von der angegebenen Zertifizierungsstelle unterschriebene Zertifikat als Zugang zum internen Netzwerk akzeptiert wird. Fällt der Schlüssel für die Zertifizierungsstelle in "falsche Hände", können damit weitere Zertifikate unterschrieben werden, denen das eigenen System "bedingungslos" vertraut.
Die Einrichtung einer eigenen Zertifizierungsstelle mit TinyCA ist relativ trivial. Beim ersten Programmstart werden alle notwendigen Parameter abgefragt, der Name der CA kann dabei frei gewählt werden (möglichst ohne Umlaute bzw. Sonderzeichen). Das hier eingegebene Passwort wird später verwendet, um Zertifikatsanforderungen zu unterschreiben. Die Einstellungen im zweiten Dialogfenster brauchen in der Regel nicht verändert werden.