SSL-Zertifikate
Inhaltsverzeichnis
Übersicht zum Thema SSL-Zertifikate
Es gibt zwei Möglichkeiten, wie man zu einem SSL-Zertifikat kommt.
- Offizielle Zertifizierungsstelle CA
- Eigene Zertifizierungsstelle CA
- Um verschlüsselte Verbindung im Internet für Kunden anzubieten,
sollte man ein Zertifikat bei einer offiziellen Zertifizierungsstelle kaufen.
Das verhindert, dass der Kunden, der die Seite aufruft, Mmeldungen über ein Fehlerhaftes Zertifikat erhält. - Um verschlüsselte Verbindungen im internen Bereich anzubieten, kann amn sich die jährlichen Kosten für das offizielle Zertifikat sparen,
wenn eine eigene Zertifizierungsstelle installiert wird. Dies ist unter Windows, wie auch unter Linux (sihe unten) möglich.
Dokumentationen
Links zu freien SSL-Zertifikats-Anbietern
Nützliche OpenSSL Befehle
- Zertifikat download
openssl s_client -showcerts -connect $SERVERNAME:443 >/tmp/$SERVERNAME.cert
Artikel Heise.de
Eigene CA
Eine eigene CA zu installieren, gibt es unter Linux, wie immer, viele Möglichkeiten:
- [TinyCA]
- OpenSSL
In diese Doku wird auf die CA mittels OpenSSL eingegangen.
Installation
aptitude openssl
Verzeichnisse
- Konfiguration: /etc/ssl/
- Hilfs-Script: /usr/lib/ssl/misc/CA.sh
- In der Datei /etc/ssl/openssl.cnf können Anpassungen für die eigene CA vorgenommen werden:
[ CA_default ] dir = ./MY-CA # Where everything is kept . . . default_days = 3650 # how long to certify for . . . countryName = Country Name (2 letter code) countryName_default = DE
Wie hier zu sehen, kann jeder Wert der bei der Erstellung des Zertifikates abgefragt wird, mit einem Defaultwert vorbelegt werden.
Dazu wird in einer zweiten Zeile hinter den Wert (z.B. countryName) ein _default gesetz und mit eigenem Inhalt gefüllt.
OpenSSL bringt das Script CA.sh und CA.pl mit. Die Scripte sind gleich.
- Setzt man folgenden Link auf dieses Script, kann es von überall aufgerufen werden:
ln -s /usr/lib/ssl/misc/CA.sh /usr/sbin
CA erstellen
# CA.sh -newca
- Es folgen nun abfragen zu den Eigenschalften der CA.
- Nach eingabe einer Phassphrase für die CA wird die CA im aktuellen Verzeichnis erstellt
Server-Zertifikat erstellen
Server-Request
# openssl req -newkey rsa:1024 -nodes -keyout newreq.pem -out newreq.pem
Hier müssen wieder Angaben zum Zertifikt gemacht werden.
WICHTIG: Es muss beim -Common Name (eg, YOUR name)- der Servername mit Domain angegeben werden.
Server-Request mit CA Zertifizieren
Achtung, beim Aufruf des folgenden Befehls muss man im Verzeichnis VOR der CA stehen:
Beispiel:
cd /etc/ssl # ls al # demoCA # CA.sh -sign
Mit diesem Befehl wird das Server-Zertifikat von der CA unterschrieben.
Extrahieren der Phassphrase aus dem Request
# openssl rsa -in newreq.pem -out Server01key.pem
Danach kann das Zertifikat newcert.pem in Server01cert.pem umbenannt werden,
so dass man später noch weiss, für welchen Server dass Zertifikat erstellt wurde.
# mv newcert.pem Server01cert.pem
Offizielle CA
Generierung des privaten Schlüssels
Zuerst wird der private Schlüssel erstellt und mit einer Passphrase gesichert:
openssl genrsa -des3 2048 > www.mydomain.de.key
Dieser Key sollte gut gesichert werden, ohne Ihn ist das später erstellte Zertifikate wertlos
Erzeugen des Zertifikat-Request
openssl req -new -key www.mydomain.de.key -out www.mydomain.de.csr
Nun folgen die Angaben, die später im Zertifikat angezeigt werden.
- Country Name: DE - State or Province: Germany - City: Karlsruhe - Organization Name: Name der Firma - Organization Unit Name: Abteilung - Widgets Common Name: FQDN des Servers WICHTIG: Hier wird der Domainname der Website eingeragen - E-Mail Adresse: Optional
Der erzeugte Request wird bei einer Root-Zertifizierungsstelle zur Signierung eingereicht.
Dies kann man bei Thawte testen, dort erhält man für eine eingeschränkte Zeit ein Testzertifikat.
Thawte Testzertifikate
Request bei der Zertifizierungsstelle einreichen
Nun sind zwei zwei Dateien vorhanden:
www.mydomain.de.key www.mydomain.de.csr
Der Inhalt der Datei "www.mydomain.de.csr" wird an die Zertifizierungsstelle übermittelt.
Nach Prüfung der Personendaten wird das Zertifikat von der Zertifizierungsstelle signiert und man erhält ein
gültiges SSL-Zertifikat zurück. Dieses Zertifikat wird in in die Datei "www.mydomain.de.crt" gespeichert.
Entfernen der Passphrase
Wenn das Zertifikat im Webserver eingebunden ist, wird bei jedem System/Webserver restart das Passwort abgefragt.
Das kann lästig sein. Um diesen Umstand zu ändern, muss aus dem "Key-File" die Passphrase entfernt werden:
openssl rsa -in www.mydomain.de.key -out www.mydomain.key.op
Im Webserver wird dann das Key-File ohne Passphrase eingebunden.
Welche Dateien sind nun vorhanden
Key-Files www.mydomain.de.key mit Passphrase www.mydomain.de.key.op ohne Passphrase
Zertifikats-Request www.mydomain.de.csr wird an die Zertifizierungsstelle gesand
Zertifikat www.mydomain.de.crt Erhält man von der Zertifizierungsstelle
Einbinden des SSL-Zertifikates im Apache2
<VirtualHost 172.20.20.2:443> ServerAdmin ....... SSLEngine On SSLCertificateKeyFile /Path-To-Cert/www.mydomain.de.key.op SSLCertificateFile /Path-To-Cert/www.mydomain.de.crt DocumentRoot .......... ServerName ........... ServerAlias ........... ScriptAlias /cgi-bin/ ............... ErrorLog .................... CustomLog ............... </VirtualHost>