Getestet unter Debian Wheezy, die PKI lief unter Windows Server 2008 R2
In diesem Beispiel erkläre ich, wie man sich mit Hilfe der Active Directory-Zertifikatsdienste ein Zertifikat für seinen Apache-Webserver erstellen kann, so dass beim Aufruf der SSL-verschlüsselten Webseite kein Zertifikatsfehler auftritt.
Denn wenn das Root-Zertifikat im AD an alle Clients (z.B. per Gruppenrichtlinie) verteilt wurde, wird dieser Zertifizierungsstelle vertraut - und somit auch unserem neuen Zertifikat.
Schritte am Linux Webserver
Ich gehe in diesem Beispiel davon aus, dass die grundsätzliche SSL-Konfiguration für den Apache schon eingerichtet ist und funktioniert.
Die SSL-Zertifikate speichere ich alle unter etc/apache2/ssl.
Dieses Verzeichnis muss erst angelegt werden:
cd /etc/apache2/ssl
Dann den Private Key erstellen:
openssl genrsa 2048 > server.key
...und die Zertifikats-Anforderung:
openssl req -new -sha256 -key ./server.key > request.csr
die Abfragen wie Ort, Servername usw. entsprechend ausfüllen.
Request.csr ausgeben:
cat request.csr
Nun den gesamten Inhalt zwischen "-----BEGIN CERTIFICATE REQUEST-----" und "-----END CERTIFICATE REQUEST-----" in die Zwischenablage kopieren. Den brauchen wir nachher bei der Zertifikatsanfoderung.
Schritte am Windows-Server
Jetzt öffnen wir an einem beliebigen Rechner die Active Directory-Zertifikatsdienste:
- https://<Server>/certsrv
- Auf der ersten Seite wählen wir "Ein Zertifikat anfordern"
- Auf der Seite "Zertifikat anfordern" klicken wir auf "erweiterte Zertifikatanforderung"
- Auf der Seite "Erweiterte Zertifikatanforderung" wählen wir "Reichen Sie eine Zertifikatanforderung ein, die eine Base64-codierte CMD- oder PKCS10-Datei verwendet......."
- Auf der Seite "Zertifikat- oder Erneuerungsanforderung einrichten" fügen wir unter "Base-64-codierte Zertifikatsanforderung (CMC oder PKCs #10 oder PKCS #7)" den Inhalt vorhin kopierten Zwischenablage ein.
- Unter "Zertifikatsvorlage" muss "Webserver" ausgewählt werden.
HINWEIS: Falls die Zertifikatsvorlage "Webserver" nicht auswählbar ist, hilft es evtl. den Internet Explorer "als Administrator" auszuführen!
- Nun klicken wir auf "Einsenden"
- Es erscheint die Seite "Zertifikat wurde ausgestellt". Die Vorauswahl "DER-codiert" können wir belassen und klicken dann auf "Download des Zertifikats".
Das Zertifikat sollte eigentlich die Endung .CER haben.
- Die Datei nenne ich in meinem Beispiel "server.cer"
- Die CER-Datei kopieren wir nun auf den Linux-Server nach /etc/apache2/ssl.
Schritte am Linux Webserver
nun müssen wir nur noch die Zertifikate in der Apache-Konfiguration angeben. Dazu bearbeiten wir die entsprechende Konfigurationsdatei und tragen den Pfad zu unseren Zertifikaten ein:.
vi /etc/apache2/sites-available/default-ssl
SSLCertificateFile /etc/apache2/ssl/server.cer
SSLCertificateKeyFile /etc/apache2/ssl/server.key
Den Zertifikatsordner würde ich vorsichtshalber noch auf die Berechtigung 600 setzen:
chmod 600 --recursive /etc/apache2/ssl
Danach noch die Konfiguration vom Apache neu einlesen:
/etc/init.d/apache2 reload
Nun solltet ihr eure HTTPS-Seite ohne Zertifikatswarnung öffnen können - zumindest im Internet Explorer. In anderen Browsern wie z.B. dem Firefox, müsst ihr erst das Root-Zertifikat in die vertrauenswürdigen Zertifizierungsstellen mit aufnehmen.