Windows mit XAMPP#

Für einen produktiven Einsatz ist es günstig, den Apache Tomcat Servlet Container hinter einem Apache HTTP Server als „Reverse Proxy“ zu betreiben. Der Reverse Proxy wird so eingerichtet, dass er nur SSL-gesicherte Verbindungen anbietet. Damit müssen für den Tomcat Servlet Container keine eigenen Zertifikate mehr verwaltet werden.

Im folgenden beschreiben wir, wie Sie einen Apache HTTP-Server als Reverse Proxy für den Tomcat Servlet Container auf einem Windows Server einrichten können. Dazu wird das Installationspaket XAMPP verwendet, das einen Apache HTTP Server, eine PHP-Installation, einen MySQL-Datenbank-Server sowie einen Tomcat beinhaltet.

Warnung

Diese Anleitung ist nicht dazu gedacht, Ihren Server so zu sichern, dass er öffentlich über das Internet zugänglich ist. Dazu sind weitere individuelle Sicherungsmaßnahmen erforderlich, die hier nicht betrachtet werden können.

Vorbereitung#

Berechtigungen#

Sie müssen die folgenden Berechtigungen auf Ihrem Server haben:

  • Es muss Ihnen erlaubt sein, Software zu installieren.

  • Sie müssen die Erlaubnis haben, Dienste zu konfigurieren.

Hardware und Software#

Zunächst müssen Sie sicherstellen, dass die Installationsumgebung alle notwendigen Voraussetzungen erfüllt:

  1. Sie müssen mit Administrator-Rechten angemeldet sein.

  2. Prüfen Sie, ob die Festplatte, auf der normalerweise Programme installiert werden (meistens C:\Programme) mindestens 1500 MByte freien Speicherplatz hat.

  3. Installieren Sie Java auf dem Rechner, falls Sie es nicht schon dort haben. Sie müssen Java 11 verwenden. Sie können es vom AdoptOpenJDK-Server herunterladen.

  4. Es sollte keine andere Software laufen, die Dienste auf Port 80 anbietet, wie IIS, Skype oder ein anderer Webserver. Es sollte kein anderer Tomcat auf dem Server laufen. Falls doch, müssen Sie Allegra manuell installieren.

  5. Stellen Sie sicher, dass auf Ihrem Server die Ports 80 und 443 für eingehenden Verkehr geöffnet sind.

  6. Stellen Sie sicher, dass Ihr Rechner unter seiner IP über Port 80 vom Internet aus erreichbar ist. Ohne das können Sie kein SSL-Zertifikat erstellen.

XAMPP-Installer herunterladen#

Sie können den XAMPP-Installer kostenlos von der XAMPP Download-Seite herunterladen.

XAMPP-Installer ausführen#

Klicken Sie mit der rechten Maustaste auf den Installer und wählen Sie im Kontextmenü den Punkt „Als Administrator ausführen“. Das müssen Sie auch dann machen, wenn Sie schon mit Administrator-Privilegien versehen sind, kein Scherz!

Installieren Sie das Paket nicht unter C:\Programme, sondern z.B. unter C:\xampp, um spätere Schwierigkeiten mit fehlenden Schreibberechtigungen zu vermeiden.

Nach erfolgreicher Installation starten Sie den Apache Webserver und prüfen unter http://localhost:80, ob eine XAMPP-Informationsseite kommt.

Apache Webserver konfigurieren#

Um den Apache Webserver als Reverse Proxy betreiben zu können, müssen Sie an einigen Stellen die Konfiguration ändern. Die Dateien, in denen Sie etwas ändern müssen, sind

  • conf/httpd.conf`

  • conf/extra/httpd-vhosts.conf`

  • conf/httpd-ssl.conf

Änderungen in httpd.conf#

Define SRVROOT "C:/xampp/apache"

Define HOSTNAME ssl.allegra-software.com  # <-- Ihre Hostname hier
...
ServerRoot "${SRVROOT}"
...

Listen 80
...
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
...
ServerName localhost:80

Änderungen in httpd-vhosts.conf#

<VirtualHost *:80>
   ServerAdmin webmaster@${HOSTNAME}
   DocumentRoot "C:/xampp/htdocs/${HOSTNAME}"
   ServerName ${HOSTNAME}
   ErrorLog "logs/${HOSTNAME}-error.log"
   CustomLog "logs/${HOSTNAME}-access.log" common

   RewriteEngine On
   RewriteCond %{HTTPS} off
   RewriteCond %{REQUEST_URI}  !^/\.well\-known
   RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>


<VirtualHost *:443>
   ServerAdmin webmaster@${HOSTNAME}
   DocumentRoot "C:/xampp/htdocs/${HOSTNAME}"
   ServerName ${HOSTNAME}
   ErrorLog "logs/${HOSTNAME}-error.log"
   CustomLog "logs/${HOSTNAME}-access.log" common
   TransferLog "C:/xampp/apache/logs/access-ssl.log"

   ProxyPreserveHost On
   RewriteEngine On

   #SSL Engine Switch:
   #Enable/Disable SSL for this virtual host.
   SSLEngine on

   #Server Certificate:
   SSLCertificateFile "conf/ssl.crt/${HOSTNAME}-crt.pem"

   #Server Private Key:
   SSLCertificateKeyFile "conf/ssl.crt/${HOSTNAME}-key.pem"

   #Server Certificate Chain:
   SSLCertificateChainFile "conf/ssl.crt/${HOSTNAME}-chain.pem"

   #Certificate Authority (CA):
   SSLCACertificatePath "${SRVROOT}/conf/ssl.crt"

   #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
   <FilesMatch "\.(cgi|shtml|phtml|php)$">
      SSLOptions +StdEnvVars
   </FilesMatch>
   <Directory "C:/xampp/apache/cgi-bin">
      SSLOptions +StdEnvVars
   </Directory>

   #SSL Protocol Adjustments:
   BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

   #Tomcat specific reverse proxy
   RewriteCond %{HTTP:Upgrade} =websocket [NC]
   RewriteRule /allegra/(.*)   ws://127.0.0.1:8080/allegra/$1 [P,L]
   RewriteCond %{HTTP:Upgrade} !=websocket [NC]

   RewriteRule /allegra/(.*)   http://127.0.0.1:8080/allegra/$1 [P,L]
   ProxyPassReverse /allegra/ https://${HOSTNAME}/allegra/
</VirtualHost>

Änderungen in httpd-ssl.conf#

<VirtualHost _default_:443>

# General setup for the virtual host
DocumentRoot "C:/xampp/htdocs/${HOSTNAME}"
ServerName ${HOSTNAME}:443
ServerAdmin admin@example.com
ErrorLog "C:/xampp/apache/logs/error-ssl.log"
TransferLog "C:/xampp/apache/logs/access-ssl.log"

SSLCertificateFile "conf/ssl.crt/${HOSTNAME}-crt.pem"
SSLCertificateKeyFile "conf/ssl.crt/${HOSTNAME}-key.pem"
SSLCertificateChainFile "conf/ssl.crt/${HOSTNAME}-chain.pem"

SSLCACertificatePath "conf/ssl.crt"

SSL-Zertifikate erstellen und installieren#

Um das Erstellen und Installieren der SSL-Zertifikate einfach zu gestalten, verwenden wir die Software win-acme . Nach dem Herunterladen und Installieren passen wir das folgende CMD-Skript entsprechend an und führen es dann aus.

set HOSTNAME=ssl.allegra-software.com
C:\Users\Administrator\acme\wacs.exe --source manual
--host %HOSTNAME% --webroot "C:\xampp\htdocs\%HOSTNAME%" \\
--validation filesystem --store pemfiles
--pemfilespath C:\xampp\apache\conf\ssl.crt

Danach starten Sie den Tomcat und den Apache Webserver neu und sollten ihr Allegra unter https://%HOSTNAME%/allegra erreichen können.