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.