Damit X.509-Zertifikate (SSL, TLS) gültig sind, müssen sie von einer CA (Certificate Authority) zertifiziert ("unterzeichnet") werden. Es gibt natürlich viele kommerzielle CAs (z.B. Verisign), die aber recht viel kosten. Für den Hausgebrauch kann man sich daher eigene Zertifikate erstellen.
Hinweis: Wer kostenlose SSL-Zertifikate für öffentliche Rechner brauchte, sollte bitte KEINE eigene CA aufsetzen, sondern CAcert verwenden! Diese Anleitung existiert nur, damit Rechner in einem internen Netz mit ungültigen Domainnamen (*.example, *.invalid) auch mit SSL-Zertifikaten versorgt werden können, da CAcert dafür keine Zertifikate erteilt!
Warnung: Diese Anleitung dient nur zu Testzwecken! Insbesondere wird nicht auf die Absicherung der hochgeheimen CA-Daten eingegangen.
Folgende Verzeichnisstruktur muss erzeugt werden:
/home/myuser/myCA | |- crl |- newcerts |- private
Die zentrale Datenbank index.txt muss erst erzeugt werden:
touch index.txt
Außerdem muss noch die Datenbank mit den vergebenen Seriennummern initialisiert werden.
echo "01" > serial
Die Datei openssl.cnf in das Verzeichnis kopieren (bei Fedora in /etc/pki/tls/openssl.cnf
zu finden, vor FC5 unter /usr/share/ssl/openssl.cnf
) und nach eigenem Gusto anpassen.
(...) HOME = /home/myuser/myCA RANDFILE = $HOME/.rnd (...) [ CA_default ] dir = $HOME # Where everything is kept (...)
Dabei kann man auch gleich die Gültigkeitsdauer eines Zertifikats anpassen, z.B. auf fünf Jahre (Standard ist ein Jahr):
default_days = 1825 # how long to certify for
Zum Abschluss muss noch der supergeheime private key der eigenen CA erzeugt werden:
openssl req -config openssl.cnf -new -x509 -extensions v3_ca \ -keyout private/cakey.pem -out cacert.pem -days 7300
Siehe SSL/X.509-Zertifikate generieren
openssl ca -config openssl.cnf -policy policy_anything -out domain.crt -infiles domain.csr
In domain.crt findet sich anschließend das signierte Zertifikat.
Die CA-Implementierung in openssl sollte eigentlich nur als Beispiel für eine CA-Implementierung dienen.
$ man 1 ca (...) WARNINGS (...) The ca utility was originally meant as an example of how to do things in a CA. It was not supposed to be used as a full blown CA itself: nevertheless some people are using it for this purpose. (...)
Daher kann es Probleme im realen Betrieb einer CA mit Hilfe der openssl-Implementierung geben. Um diese Klippen zu umschiffen, eignen sich kommerzielle PKI-Produkte oder Open-Source-Lösungen wie OpenCA oder dessen sehr aktiver Fork OpenXPKI. Oftmals ist auch CAcert sehr geeignet, dort gibt es z.B. auch einen speziellen Modus für Unternehmen, die ihre Zertifikate dort über mehrere Benutzerzugänge verwalten können und so unabhängig von einzelnen Administratoren sind.