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.:
Versand von E-Mails über einen SMTP-Server
Empfang von E-Mails über IMAP oder POP3
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:
Von einer offiziellen Zertifizierungsstelle (CA) ausgestellte Zertifikate
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:
Beschaffen Sie das Zertifikat des externen Dienstes (z. B. Ihres Mailservers). Es ist normalerweise an einen Hostnamen wie
mail.example.comgebunden.Erstellen Sie ein Keystore-Verzeichnis im Allegra-Home-Ordner:
mkdir <ALLEGRA_HOME>/keystoreImportieren 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>/keystorebefinden. Der Dateiname sollte die Erweiterung.ksund 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.