JBoss hinter einem Reverse-Proxy
Die in diesem Abschnitt beschriebenen Konfigurationen sind nicht updatesicher und werden z.B. vom Installer nicht ausgewertet und auf (zukünftigen) Versionen erneut gesetzt.
Allgemeine Informationen
WebSockets
Das CRM nutzt an den folgenden Stellen WebSockets:
https://<server>:<port>/webclient/primepush/tasklist/*
https://<server>:<port>/script/languageserver/groovy
Ggf. müssen diese im Reverse-Proxy separat hinterlegt werden.
TLS-Termination
Der Applikationsserver (JBoss) kann nicht ohne gültige https-Konfiguration (→ Zertifikate, Key- und Truststore) betrieben werden. Natürlich kann das verwendete Zertifikat zwischen JBoss und Reverse-Proxy ein anderes sein als das für die externe Kommunikation des Reverse-Proxys.
Path-Prefix
Der Betrieb des CRMs hinter einem Path-Prefix wird nicht unterstützt.
Konfiguration für mehrere Domains
Die globalen Variablen
C0CursorDefaultServerBaseURL
,C0CursorDefaultServerPort, C0CursorDefaultServerProtocol
, dürfen nicht gepflegt sein.Der Reverse-Proxy muss die
X-Forwarded-*
Header pflegen, d.h.X-Forwarded-Host
,X-Forwarded-Server
,X-Forwarded-For.
Der Applikationsserver muss diese auswerten, d.h. JBoss-Konfigurationen sind zu setzen
Unter
<Installationsverzeichnis des Jboss>/bin/cursor/proxy-header-directives/proxy-header-directives.properties
die Auswertung derX-Forwarded-*
Header aktivieren und die IP-Adresse des Reverse-Proxys eintragen:
# Controls whether the X-Forwarded-* headers are evaluated and respected
# by the application server. If this is enabled, you MUST provide the
# IP-Address of the proxy setting these headers. Otherwise, security
# issues arise (e.g. IP-Spoofing.)
enable_x_forwarded_header=true
# Possible values and patterns for trusted_ip_address are documented
# at https://undertow.io/undertow-docs/undertow-docs-2.0.0/predicates-attributes-handlers.html#ip-access-control-handler
# MUST always be a non-empty value, but the value is ignored unless
# enable_x_forwarded_header is true
trusted_ip_address=10.10.0.8
Anschließend die Einstellungen mittels
proxy-header-directives.bat
bzw.proxy-header-directives.sh
in den Applikationsserver übernehmen.Diese Einstellungen werden bei zukünftigen Patches und Updates beibehalten.
Diese Einstellungen sollten nur und ausschließlich hinter vertrauenswürdigen Proxys gesetzt werden. Andernfalls können Benutzer IP-Spoofing betreiben. Das umfasst auch den direkten Zugriff auf den Applikationsserver ohne Reverse-Proxy.
nginx als Reverse-Proxy (mehrere Domains)
Der nachfolgende Konfigurationsblock kann als Basis für die Konfiguration von nginx als Reverse-Proxy dienen. Die Platzhalter <parameter>
sind zu ersetzen.
server {
listen 443 ssl;
server_name <public_server>;
# SSL configuration matching best practices according to https://ssl-config.mozilla.org/
<insert_ssl_config_here>
# Root
location / {
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://<crm_server>:<crm_port>;
}
# WebSockets
location /webclient/primepush/tasklist/ {
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://<crm_server>:<crm_port>/webclient/primepush/tasklist/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /script/languageserver/groovy {
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://<crm_server>:<crm_port>/script/languageserver/groovy;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}