Vorbereitung / Quellen
Apache2 Binaries für Windows:
https://www.apachehaus.com/cgi-bin/download.plx
SSL Konfig Generator:
Utility Tool für Zertifikate:
https://www.digicert.com/support/tools/certificate-utility-for-windows
Was wird benötigt?
- Zugriff auf den Server
- das pfx Zertifikat (i.d.R. gestellt vom Kunden)
- administrativer Zugriff auf den Server
- Installationsdateien für den Apache (s. Apache2 Binaries für Windows)
- DigiCert Tool (s. Utility Tool für Zertifikate)
Falls das DigiCert Tool nicht installiert werden darf ist es auch möglich über die Kommandozeile das Zertifikat aufzuteilen.
Installation
Nach dem Download der Installationsdateien hat man ein .zip vorliegen. Dieses soll entpackt und der darin enthaltene Apache als Dienst installiert werden.
Eventuelle Vorgaben des Kunden bzgl. der Installationspfade sind zu beachten.
- Zip entpacken
- Inhalt des Apache24 Verzeichnis nach C:\Apache24 kopieren
- CMD in C:\Apache24\bin öffnen
- Befehl httpd.exe -k install -n "MyServiceName" ausführen
Anschließend sollte man in den Diensten des PCs einen Dienst mit dem eingegebenen Dienstnamen finden. Dieser repräsentiert den Apache.
Konfiguration als Proxy
Der Apache kann natürlich für deutlich mehr eingesetzt werden als nur als Proxy. Entsprechend sind dort sehr viele Features aktiviert die wir nicht benötigen und unter umständen sogar Probleme bereiten können.
Die Konfiguration wird in der Datei httpd.conf im conf Verzeichnis der Apache Installation durchgeführt.
Port
Der Port wird durch die Zeile definiert.
Der Port kann dort entsprechend angepasst werden. Soll der Apache auf mehreren Ports laufen sind pro Port ein Listen Befehl in die Konfiguration einzufügen.
Module
Wir aktivieren nur Module die für den Betrieb als Reverse Proxy gebraucht werden.
Die folgende Liste kann so einfach über die Module in der Konfig kopiert werden.
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule http2_module modules/mod_http2.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_http2_module modules/mod_proxy_http2.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule status_module modules/mod_status.so
LoadModule headers_module modules/mod_headers.so
LoadModule rewrite_module modules/mod_rewrite.so
Generelle Servereinstellungen
Es gibt einige Einstellungen die im Apache angepasst oder hinzugefügt werden müssen. Dies gilt vor allem wenn dieser als einziger Proxy eingesetzt wird und der Server aus dem Internet erreichbar ist.
Hierbei geht es vor allem darum, keine unnötigen Informationen über den Server oder den Apache nach außen zu geben.
Der Servername ist entsprechend zu setzen
ServerName localhost:80
Die Signatur des Servers ist zu deaktivieren
ServerSignature Off
Die Banner sind zu deaktivieren
ServerTokens Prod
Tracen ist zu deaktivieren
TraceEnable off
Es sollte anschließend einen Bereich in der Konfig geben der etwa so aussieht:
Directories
Die Einstellungen für die Directories „htdocs“ und „cgi-bin“ werden nicht benötigt da wir den Apache ja nur als Reverse Proxy einsetzen wollen. Entsprechend werden die Einstellungen aus der Konfig entfernt.
Entfernen
Entfernen
Entfernen
VirtualHosts
Durch Virtualhosts wird dem Apache ein gewisses Verhalten an gewissen Ports konfiguriert.
Wir hinterlegen hier die automatische Weiterleitung von Port 80 auf Port 443 und hinterlegen dort auch die einzelnen Einstellungen zum SSL Zertifikat.
Port 80 mit Weiterleitung auf Port 443
<VirtualHost *:80> RewriteEngine On RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/ RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] </VirtualHost>
Port 443 mit SSL Zertifikat
<VirtualHost *:443> SSLEngine on # curl https://ssl-config.mozilla.org/ffdhe2048.txt >> /path/to/signed_cert_and_intermediate_certs_and_dhparams SSLCertificateFile /path/to/signed_cert_and_intermediate_certs_and_dhparams SSLCertificateKeyFile /path/to/private_key # enable HTTP/2, if available Protocols h2 http/1.1 # HTTP Strict Transport Security (mod_headers is required) (63072000 seconds) Header always set Strict-Transport-Security "max-age=63072000" </VirtualHost>
SSL
Die SSL Einstellungen beschreiben die grundsätzlich erlauben Protokolle und Verschlüsselungen für den Server.
# intermediate configuration SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 SSLHonorCipherOrder off SSLSessionTickets off SSLUseStapling On SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
PFX Zertifikat anpassen
Ein pfx Zertifikat kann nicht ohne weiteres in den Apache eingespielt werden. Im gegensatz zum Tomcat kann der Apache nicht mit Archiven umgehen. Er benötigt das rohe Zertifikat bzw. den rohen Schlüssel.
Dies kann via DigiCert Tool aus dem pfx extrahiert werden. Dafür wird das Passwort des pfx Zertifikats benötigt.
Zertifikat hinzufügen
Zertifikat Exportieren
Diese Dateien werden anschließend in den Apache eingebunden. Siehe dazu Abschnitt „VirtualHosts“. Das .crt wird als „SSLCertificateFile“ und der .key als „SSLCertificateKeyFile“ hinterlegt.
Let’s Encrypt Zertifikate (certbot)
In einigen Fällen kann der Kunde kein SSL Zertifikat bereit stellen. In dem Fall wird ein SSL Zertifikat von Lets Encrypt genutzt. Um dies einzufügen nutzen wir i.d.R. die Software certbot.
Certbot konfiguriert normalerweise alles selbst. Es kann allerdings vorkommen das dies aufgrund von fehlenden Rechten o.ä. nicht funktioniert. In dem Fall muss certbot manuell konfiguriert werden.
Certbot kann hier heruntergeladen werden: https://certbot.eff.org/instructions?ws=apache&os=windows
War dieser Artikel hilfreich?
Das ist großartig!
Vielen Dank für das Feedback
Leider konnten wir nicht helfen
Vielen Dank für das Feedback
Feedback gesendet
Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren