Einrichtung Apache Webserver unter Windows

Erstellt von Paul Schreiber, Geändert am Mi, 10 Jan um 12:40 NACHMITTAGS von Paul Hanzlik

Vorbereitung / Quellen


Apache2 Binaries für Windows:

https://www.apachehaus.com/cgi-bin/download.plx

SSL Konfig Generator:

https://ssl-config.mozilla.org/#server=apache&version=2.4.41&config=intermediate&openssl=1.1.1k&guideline=5.6

Utility Tool für Zertifikate:

https://www.digicert.com/support/tools/certificate-utility-for-windows

 

Was wird benötigt?

  1. Zugriff auf den Server
  2. das pfx Zertifikat (i.d.R. gestellt vom Kunden)
  3. administrativer Zugriff auf den Server
  4. Installationsdateien für den Apache (s. Apache2 Binaries für Windows)
  5. 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.

  1. Zip entpacken
  2. Inhalt des Apache24 Verzeichnis nach C:\Apache24 kopieren
  3. CMD in C:\Apache24\bin öffnen
  4. 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

Wie können wir diesen Artikel verbessern?

Wählen Sie wenigstens einen der Gründe aus
CAPTCHA-Verifikation ist erforderlich.

Feedback gesendet

Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren