Apache 2.2 mit SSL-Unterstützung installieren (Windows)
Neulich habe ich Apache 2.2 mit OpenSSL-Unterstützung auf einem Windows 7-Rechner installiert. Das Ganze hat etwas länger gedauert als erwartet, da es ein paar Stolpersteine aus dem Weg zu kicken galt. Damit es das nächste Mal schneller geht, schreib ich hier mal für mich und natürlich auch euch nieder, wie es am schnellsten geht.
Installation von Apache mit SSL-Unterstützung
Damit ihr HTTP mit SSL (HTTPS) nutzen könnt, braucht ihr einen Apachen mit OpenSSL-Federschmuck. Das passende Packet findet ihr auf http://apache.mirror.testserver.li/httpd/binaries/win32/ (oder nem anderen Mirror). Ihr müsst eine Datei im Stile von httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi runterladen.
Falls ihr bereits eine Apache-Installation am Laufen habt, empfiehlt es sich, diese jetzt zu deinstallieren.
Danach installiert ihr den frisch runtergeladenen Apache. Das kriegt ihr alleine hin - ich glaube an euch!
Zertifikat für localhost generieren
Jetzt öffnet wir erst mal eine Konsole. Falls ihr Windows 7-Nutzer seid, ist es wichtig, dass ihr die Konsole mit Admin-Rechnen öffnet.
Danach wechselt ihr ins Installationsverzeichnis von Apache. Zum Beispiel:
cd "c:\Program Files (x86)\Apache Software Foundation\Apache2.2"
Dann erstellen wir erst mal ein Verzeichnis wo wir unsere Zertifikate aufbewahren wollen:
mkdir conf\ssl
So. Nun ist alles bereit. Zuerst müssen wir eine Zertifikatsignierungsanfrage plus privaten Schlüssel generieren.
.\bin\openssl req -config conf\openssl.cnf -new -out conf\ssl\localhost.csr -keyout conf\ssl\localhost.pem

Ihr werdet zu folgenden Eingaben aufgefordert:
- PEM pass phrase - Ein längeres, komplexes Passwort
- Country Name - z.B.
CHfür Schweiz oderDEfür Deutschland - State or Province Name - Das Bundesland/der Kanton in dem ihr lebt (oder ein Fantasiewert)
- Locality Name - Die Stadt in der ihr lebt (oder ein Fantasiewert)
- Organization Name - Euer Arbeitgeber/eure Firma (oder ein Fantasiewert)
- Organizational Unit Name - Die Abteilung der Firma (oder ein Fantasiewert)
- Common Name - Hier müsst ihr nun die Domain eingeben, für die das Zertifikat erstellt werden soll. Also in unserem Falle
localhost. - Email Address - Die E-Mail-Adresse für den technischen Kontakt des Zertifikatinhabers. Also eure E-Mail-Adresse (oder ein Fantasiewert).
- A challenge password - Dieses Attribut könnt ihr ignorieren indem ihr Enter drückt. Wir werden unser Zertifikat selber signieren.
- An optional company name - Ebenfalls ignorieren.
Als nächstes entfernen wir die Passphrase/das Passwort aus dem privaten Schlüssel und speichern ihn in einer eigenen Datei. Das geht so:
.\bin\openssl rsa -in conf\ssl\localhost.pem -out conf\ssl\localhost.key

Zu guter Letzt generieren wir uns noch unseres eigenens Zertifikat. Normalerweise würde dies eine autorisierte Stelle übernehmen, doch für den Selbstgebraucht ist das nicht notwendig.
.\bin\openssl x509 -in conf\ssl\localhost.csr -out conf\ssl\localhost.crt -req -signkey conf\ssl\localhost.key -days 1825

Durch die Angabe von -days 1825 wird dieses Zertifikat für 5 Jahre gültig sein. Das sollte reichen.
Zusammengefasst haben wir nun folgende Dateien erstellt:
localhost.crs- Eine Anfrage für eine Zertifikatsignierunglocalhost.pem- Der private Schlüssellocalhost.key- Die Passphrase des privaten Schlüsselslocalhost.crt- Das eigentliche, signierte Zertifikat
Konfiguration von Apache mit SSL-Unterstützung
Was wir jetzt noch tun müssen ist unserem Apachen den Federschmuck aufsetzen. Dazu öffnen wir erst mal die httpd.conf im Konfigurationsverzeichnis von Apache. Dort gilt es folgende Schritte durchzuführen:
- Die Zeile
#LoadModule ssl_module modules/mod_ssl.soauskommentieren - Die Zeile
#Include conf/extra/httpd-ssl.confauskommentieren
Nun öffnen wir eben diese httpd-ssl.conf und machen folgendes:
- Die Zeile beginnend mit
SSLCertificateFilesuchen und das Ende des Pfades aufconf/ssl/localhost.crtändern. Also z.B.SSLCertificateFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/ssl/localhost.crt". - Die Zeile beginnend mit
SSLCertificateKeyFilesuchen und das Ende des Pfades aufconf/ssl/localhost.keyändern. Also z.B.SSLCertificateKeyFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/ssl/localhost.key".
Jetzt nur das Speichern nicht vergessen, den Apachen vom Pferden holen und wieder drauf setzen (= geniale Metapher für Neustarten) und schon sollte https://localhost funktionieren. :]
Wichtig für Windows 7-Benutzer
Falls ihr Apache im Standardverzeichnis installiert habt, beinhaltet euer Pfad bei C:/Program Files (x86)/Apac... runde Klammern. Dies führt zur Fehlermeldung SSLSessionCache: Invalid argument: size has to be >= 8192 bytes beim Versuch den Apache zu starten.
Abhilfe schafft eine Verknüpfung auf das Apache-Verzeichnis z.B. im Root von C:\. Da es mir wegen den Rechten nicht gelang eine Verknüpfung direkt in C:\ zu erstellen, habe ich diese zuerst auf dem Desktop erstellt und danach nach C:\ kopiert.
Schlussendlich solltet ihr einfach eine Verknüpfung à la C:\Apache2.2 nach C:\Program Files (x86)\Apache Software Foundation\Apache2.2 haben.
Danach sucht ihr im httpd-ssl.conf die Zeile beginnend mit SSLSessionCache und ersetzt den bestehenden Pfad mit dem neuen, klammerlosen Pfad der Verknüpfung. Zum Beispiel SSLSessionCache "shmcb:C:/Apache2.2/logs/ssl_scache(512000)".
Jetzt sollte der Apache mit HTTPS auch unter Windows 7 rocken!
Ähnliche Artikel
- Wenn der MySQL Dienst verschwindet
- Wenn PHP einfach nicht mit dem lokalen MySQL-Server verbinden will (Windows)
- Webapplikationsupdate trotz Wartungsseite testen




