SSL- und TLS-Konfiguration#

Achtung

Allegra unterstützt keine native SSL- oder HTTPS-Konfiguration. Um Allegra sicher über HTTPS zu erreichen, muss ein Reverse Proxy (z. B. Nginx oder Apache) vor die Allegra-Anwendung geschaltet werden.

Der offizielle Allegra-Support umfasst nicht die SSL-Konfiguration, Zertifikatsverwaltung oder Fehleranalyse am Proxy. Die folgenden Informationen dienen als Referenzbeispiel für erfahrene Systemadministratoren.


Verwendung eines Reverse Proxy#

Es wird dringend empfohlen, Allegra hinter einem bestehenden Webserver (Reverse Proxy) wie Nginx oder Apache zu betreiben. Der Proxy übernimmt die HTTPS-Verschlüsselung und leitet die Anfragen an die Allegra-Anwendung weiter, die in Docker oder auf einem lokalen Port (z. B. 8080) läuft.

Diese Konfiguration ermöglicht Ihnen:

  • Nutzung von Standard-HTTPS-Zertifikaten, ohne Allegra selbst zu verändern

  • Bereitstellung von Allegra unter einem leicht zu merkenden Domainnamen (z. B. https://allegra.example.com)

  • Sicheren Betrieb von Allegra auf einem lokalen Port hinter Ihrer Firewall

Bemerkung

Allegra sollte niemals direkt aus dem Internet erreichbar sein. Verschlüsselung und Zugriffskontrolle erfolgen ausschließlich über den vorgeschalteten Proxy.


Netzwerkübersicht#

Das folgende Diagramm zeigt eine typische HTTPS-Umgebung mit Reverse Proxy:

+---------------------------+
|        Webbrowser         |
|   (Benutzer greift zu)    |
+------------+--------------+
             |
             |  HTTPS (443)
             v
+---------------------------+
|   Reverse Proxy (Nginx)   |
|  HTTPS-Endpunkt, leitet   |
|   intern weiter (HTTP)    |
+------------+--------------+
             |
             |  HTTP (8080, lokal)
             v
+---------------------------+
|    Allegra-Anwendung      |
| (Docker-Container / JVM)  |
+---------------------------+

Nginx-Proxy-Beispiel#

Die folgende minimale Nginx-Konfiguration stellt Allegra sicher über HTTPS bereit und leitet alle Anfragen an eine lokal laufende Instanz auf Port 8080 weiter.

server {
    listen 80;
    server_name allegra.example.com;
    return 301 https://$host$request_uri;
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 443 ssl http2;
    server_name allegra.example.com;

    ssl_certificate     /etc/ssl/certs/your_cert.pem;
    ssl_certificate_key /etc/ssl/private/your_key.pem;

    client_max_body_size 100m;

    location /allegra/ {
        proxy_pass http://127.0.0.1:8080/allegra/;

        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Port  443;

        proxy_http_version 1.1;
        proxy_set_header Upgrade    $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_buffering off;

        proxy_redirect http://127.0.0.1:8080/allegra/ https://$host/allegra/;

        proxy_cookie_path / /allegra;
        proxy_cookie_path /allegra "/allegra; Secure; HttpOnly; SameSite=Strict";
    }
}

Bemerkung

Ersetzen Sie Domain und Zertifikatspfad durch Ihre eigenen Werte. Belassen Sie X-Forwarded-Proto und X-Forwarded-Port, damit Allegra korrekte HTTPS-Links erzeugt.


Apache-Proxy-Beispiel#

Für Apache2 müssen die erforderlichen Proxy-Module aktiviert und eine einfache Weiterleitungskonfiguration definiert werden.

# Benötigte Module aktivieren
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_wstunnel
a2enmod ssl
a2enmod headers

<VirtualHost *:443>
    ServerName allegra.example.com

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/your_cert.pem
    SSLCertificateKeyFile /etc/ssl/private/your_key.pem

    ProxyRequests Off
    ProxyPreserveHost On

    # Ursprüngliches Schema und Port weitergeben
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port  "443"

    # HTTP- und WebSocket-Verkehr weiterleiten
    ProxyPass        /allegra  http://127.0.0.1:8080/allegra timeout=120 keepalive=On
    ProxyPassReverse /allegra  http://127.0.0.1:8080/allegra
    ProxyPass        /allegra  ws://127.0.0.1:8080/allegra
    ProxyPassReverse /allegra  ws://127.0.0.1:8080/allegra

    # Cookies anpassen und Sicherheitsflags setzen
    ProxyPassReverseCookiePath / /allegra
    Header edit Set-Cookie "(?i)^(.*)$" "$1; Secure; HttpOnly; SameSite=Strict"
</VirtualHost>

Bemerkung

Ersetzen Sie Domain und Zertifikatspfade durch Ihre eigenen Werte. Stellen Sie sicher, dass X-Forwarded-Proto und X-Forwarded-Port gesetzt sind, damit Allegra korrekte HTTPS-URLs erzeugt.


Zertifikate und Verschlüsselung für externe Verbindungen#

Allegra stellt auch ausgehende Verbindungen zu externen Systemen her, z. B.:

  1. Versand von E-Mails über einen SMTP-Server

  2. Empfang von E-Mails über IMAP oder POP3

  3. Verbindung zu einem Verzeichnisdienst (LDAP, optional)

Diese externen Verbindungen sollten stets verschlüsselte Protokolle (SSL/TLS) verwenden, damit Passwörter oder vertrauliche Daten nicht im Klartext übertragen werden.


Offizielle und selbstsignierte Zertifikate#

Die verschlüsselte Kommunikation basiert auf digitalen Zertifikaten. Es gibt zwei Haupttypen:

  1. Von einer offiziellen Zertifizierungsstelle (CA) ausgestellte Zertifikate

  2. Selbstsignierte Zertifikate

Von einer CA ausgestellte Zertifikate werden in der Regel automatisch von Browsern und Java-Laufzeitumgebungen als vertrauenswürdig anerkannt. Selbstsignierte Zertifikate müssen dagegen manuell als vertrauenswürdig hinzugefügt werden.


Installation selbstsignierter Zertifikate#

Wenn Sie ein selbstsigniertes Zertifikat verwenden, muss dieses im System oder in der Java-Umgebung, die Allegra nutzt, als vertrauenswürdig hinterlegt werden.

So installieren Sie ein Zertifikat für Allegra:

  1. Beschaffen Sie das Zertifikat des externen Dienstes (z. B. Ihres Mailservers). Es ist normalerweise an einen Hostnamen wie mail.example.com gebunden.

  2. Erstellen Sie ein Keystore-Verzeichnis im Allegra-Home-Ordner:

    mkdir <ALLEGRA_HOME>/keystore
    
  3. Importieren Sie das Zertifikat in den lokalen Allegra-Keystore mit dem Dienstprogramm keytool, das in jeder Java-Installation enthalten ist:

    keytool -keystore <ALLEGRA_HOME>/keystore/<your.domain.com>.ks \
            -import -file theServersCertificate.cer
    

    Die Keystore-Datei muss sich in <ALLEGRA_HOME>/keystore befinden. Der Dateiname sollte die Erweiterung .ks und den Hostnamen des Zielservers enthalten.


Import in den Java-Keystore#

Falls die obige Methode nicht funktioniert oder Sie das Zertifikat systemweit vertrauen möchten, können Sie es direkt in den Standard-Keystore der Java-Laufzeit importieren.

Beispiel unter Windows:

cd %JAVA_HOME%\bin
keytool -import -alias <alias> -file theServersCertificate.crt ^
        -keystore ..\lib\security\cacerts

Während des Imports werden Sie nach einem Passwort gefragt. Das Standardpasswort lautet in der Regel changeit (sofern es nicht geändert wurde).


Bemerkung

Das Importieren selbstsignierter Zertifikate erfordert Administratorrechte und sollte mit Vorsicht erfolgen, um die Systemsicherheit nicht zu gefährden. Überprüfen Sie stets die Quelle des Zertifikats, bevor Sie es importieren.