Um unter Apache für Windows eine Website mit HTTPS zu übertragen, nachfolgende Schritte ausführen:
A) CSR anfordern
- OpenSSL herunterladen und nach „C:\Program Files\OpenSSL-Win32“ installieren.
-
Ein CSR erstellen:
- Befehlszeile öffnen
cd C:\Ablage
"C:\Program Files\OpenSSL-Win32\bin\openssl.exe" req -nodes -new -newkey rsa:4096 -sha256 -out csr.pem
- Dann alle Felder ausfüllen. Beim „Common Name“ den Domain-Namen eintragen. Für Wildcard-Zertifikate ein „*“ am Anfang, also z.B.
*.example.org
.
- Mit dem CSR dann bei einem Anbieter, z.B. SSL-Trust, ein Zertifikat anfragen.
B) Apache vorbereiten
- In der „httpd.conf“-Datei den Listen auf den 443-Port erweitern, z.B.
Listen 213.174.38.113:443
ergänzen. - SSL-Modul einbinden via „httpd.conf“-Datei:
LoadModule ssl_module modules/mod_ssl.so
. - In der einzelnen Konfigurationsdatei für den virtuellen host entsprechend auf beide Ports lauschen, z.B.
<VirtualHost 213.174.38.113:80>
und<VirtualHost 213.174.38.113:443>
als zwei virtuelle Hosts ergänzen.
C) SSL-Zertifikat speichern und referenzieren
-
Enthaltene Zertifikate, den zuvor erstellten private Key sowie optional das CA-Bundle jeweils entsprechend in die Zielordner kopieren.
-
SSL-Engine einschalten:
<IfModule mod_ssl.c> SSLEngine on SSLCompression off SSLCertificateKeyFile C:/Ablage/ssl.key/example.com.key SSLCertificateFile C:/Ablage/ssl.crt/example.com.crt SSLCertificateChainFile C:/Ablage/ssl.crt/example.com.ca-bundle SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 </IfModule>
-
Alles von HTTP auf HTTPS umleiten:
RewriteRule ^/?(.*) https://www.mein-server.de/$1 [R,L]
-
Apache neu starten.
D) Testen
- Die Website im Browser aufrufen.
- Das SSL-Zertifikat prüfen lassen. Auf die Schnelle bei Digicert, intensiver bei Qualys SSL Labs.
E) Nach IIS verschieben
Speziell bei einem Wildcard-Zertifikat kann es Sinn machen, dieses in Apache und in IIS zu verwenden.
- PFX-Datei mit OpenSSL erstellen:
openssl pkcs12 -export -out mydomain.pfx -inkey mydomain.key -in mydomain.crt -certfile intermediateCA.crt
. - PFX-Datei als Zertifikat in Windows importieren (über die MMC-Zertifikate-Konsole).
- Zertifikat im IIS-Manager auswählen und einer Website zuweisen.
F) Aus einem IIS-PFX-Zertifikat-Export Dateien für Apache generieren
Auch anders herum geht es. Also in IIS ein Zertifikat exportieren und dann in Apache verwenden.
Dazu muss das Zertifikat entsprechend aufbereitet werden:
-
Zertifikat im IIS-Manager in eine *.pfx-Datei exportieren.
-
Mit OpenSSL die PFX-Datei in eine *.cer- und eine *.key-Datei umwaendeln:
openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain.key
Auf meinen eigenen Websites musste ich nur die .key-Datei generieren, die .cer-Datei habe ich nicht benötigt.
G) Sicherheit einstellen
Bei SSL kann man viel falsch konfigurieren, serverseitig, speziell die Cipher-Suits.
Danke diesem Artikel konnte ich das sehr gut konfigurieren und hier dann testen.
Ein Beispiel-Ausschnitt aus einer .htacess-Datei nachfolgend:
<IfModule mod_ssl.c>
SSLEngine on
SSLCompression off
SSLCertificateKeyFile C:/Myfolder/my-cert.key
SSLCertificateFile C:/Myfolder/my-cert.crt
SSLCertificateChainFile C:/Myfolder/my-cert.ca-bundle
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite 'EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA:EECDH:EDH+AESGCM:EDH:ECDH+AESGCM:ECDH+AES:ECDH:HIGH:MEDIUM:!RC4:!3DES:!CAMELLIA:!SEED:!aNULL:!MD5:!eNULL:!LOW:!EXP:!DSS:!PSK:!SRP'
</IfModule>
SharePoint-Systemhaus Stuttgart – Test Management Software – Homepage-Baukasten mit Shop