Windows mit XAMPP

Für einen produktiven Einsatz ist es günstig, den Apache Tomcat Servletcontainer hinter einem Apache HTTP Server als Proxy zu betreiben. Der Proxy wird so eingerichtet, dass er nur SSL-gesicherte Verbindungen anbietet, so dass für den Tomcat keine Zertifikate hinterlegt und verwaltet werden müssen.

Im folgenden beschreiben wir, wie Sie einen Apache HTTP-Server als 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 Sicherungsmaßnahmen erforderlich, die hier nicht behandelt werden können.

Vorbereitung

Berechtigungen

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

  • Es muss Ihnen erlaubt sein, Software zu erstellen.

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

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 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 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.