Hinzufügen eines HTTPS-Listeners
HTTPS-Listener aktivieren (Lobster Integration und Admin-Konsole)
Folgendes XML-Fragment dient zum Hinzufügen eines HTTPS-Listeners (HTTPS-Connector) in Konfigurationsdatei ./etc/hub.xml (Lobster Integration) oder ./etc/admin.xml (Admin-Konsole), der im Rahmen des aktuellen HTTP-Servers auf eingehende, per SSL abgesicherte, Anfragen wartet. Beachten Sie die unterschiedlichen Werte von refid für Lobster Integration und die Admin-Konsole.
Bei Neuinstallationen (nicht Updates) ab Version 4.6.9 gilt die Datei ./etc/hub.xml nur für die Lobster-Integration-Kommunikation (z. B. HTTP und AS2) und die Datei ./etc/admin.xml für die Admin-Konsole und die Lobster-Integration-GUI.
Davor galt die Datei ./etc/hub.xml für die Lobster-Integration-Kommunikation und die Lobster-Integration-GUI und die Datei ./etc/admin.xml nur für die Admin-Konsole.
Es muss ein TLS-fähiges eigenes Zertifikat (setzen Sie die Checkboxen Signierung, Verschlüsselung, TLS Server, Signierung/Verschl. muss unterstützt werden) in Lobster Integration eingebunden sein und im Parameter <Set name="serverCertSubjectName"> die Zertifikats-ID oder der Common Name (CN) dieses Zertifikats angegeben sein (statt YourCertificateCommonName). Die bevorzugte Variante ist die im Code gezeigte mit ksnote:mycertificate, wobei mycertificate der Wert ist, den Sie in Ihrem Zertifikat in Feld "Notiz" eingetragen haben. Der Grund ist, dass sich die Zertifikats-ID ändert, wenn Ihr Zertifikat ausläuft und Common Names doppelt vorhanden sein können. Sie verhindern also mögliche Namenkonflikte und Änderungen an der Konfigurationsdatei. Achten Sie aber auf eindeutige Werte in Feld Notiz. Hinweis: Wird das angegebene Zertifikat nicht gefunden, wird das erstbeste brauchbare Zertifikat verwendet, das gefunden wird.
Es kann parallel ein HTTP-Listener und ein HTTPS-Listener laufen.
Wenn die Änderungen nicht nach 15 Minuten automatisch übernommen werden, ist ein Neustart des Integration Servers nötig.
<!-- SSL support by authentication service, preferred method -->
<!-- =========================================================== -->
<!-- Add a HTTPS Connector. -->
<!-- Configure an o.e.j.server.ServerConnector with connection -->
<!-- factories for TLS (aka SSL) and HTTP to provide HTTPS. -->
<!-- All accepted TLS connections are wired to a HTTP connection.-->
<!-- -->
<!-- Consult the javadoc of o.e.j.server.ServerConnector, -->
<!-- o.e.j.server.SslConnectionFactory and -->
<!-- o.e.j.server.HttpConnectionFactory for all configuration -->
<!-- that may be set here. -->
<!-- =========================================================== -->
<
Call
id
=
"httpsConnector"
name
=
"addConnector"
>
<
Arg
>
<
New
class
=
"org.eclipse.jetty.server.ServerConnector"
>
<
Arg
name
=
"server"
>
<!-- Use "MainServer" for Lobster Integration and "AdminServer" for Admin Console -->
<
Ref
refid
=
"MainServer"
/>
</
Arg
>
<
Arg
name
=
"factories"
>
<
Array
type
=
"org.eclipse.jetty.server.ConnectionFactory"
>
<
Item
>
<
New
class
=
"org.eclipse.jetty.server.SslConnectionFactory"
>
<
Arg
name
=
"next"
>http/1.1</
Arg
>
<
Arg
name
=
"sslContextFactory"
>
<
New
class
=
"com.ebd.hub.server.http.jetty.AuthServiceSSLContextFactory"
>
<!-- <
Set
name
=
"serverCertSubjectName"
>*CN=YourCertificateCommonName*</
Set
> -->
<!-- <
Set
name
=
"serverCertSubjectName"
>certid:1574423144929056</
Set
> -->
<
Set
name
=
"serverCertSubjectName"
>ksnote:mycertificate</
Set
>
<
Call
name
=
"addExcludeCipherSuites"
>
<
Arg
>
<
Array
type
=
"String"
>
<
Item
>.*NULL.*</
Item
>
<
Item
>.*RC4.*</
Item
>
<
Item
>.*MD5.*</
Item
>
<
Item
>.*DES.*</
Item
>
<
Item
>.*DSS.*</
Item
>
</
Array
>
</
Arg
>
</
Call
>
<
Call
name
=
"addExcludeProtocols"
>
<
Arg
>
<
Array
type
=
"java.lang.String"
>
<
Item
>SSL</
Item
>
<
Item
>SSLv2</
Item
>
<
Item
>SSLv2Hello</
Item
>
<
Item
>SSLv3</
Item
>
</
Array
>
</
Arg
>
</
Call
>
<
Set
name
=
"renegotiationAllowed"
>FALSE</
Set
>
<
Set
name
=
"IncludeCipherSuites"
>
<
Array
type
=
"String"
>
<
Item
>TLS_DHE_RSA.*</
Item
>
<
Item
>TLS_ECDHE.*</
Item
>
</
Array
>
</
Set
>
</
New
>
</
Arg
>
</
New
>
</
Item
>
<
Item
>
<
New
class
=
"org.eclipse.jetty.server.HttpConnectionFactory"
>
<
Arg
name
=
"config"
>
<
Ref
refid
=
"sslHttpConfig"
/>
</
Arg
>
</
New
>
</
Item
>
</
Array
>
</
Arg
>
<!-- Use 9443 for Lobster Integration GUI and Admin Console -->
<
Set
name
=
"port"
>9443</
Set
>
<
Set
name
=
"idleTimeout"
>180000</
Set
>
</
New
>
</
Arg
>
</
Call
>
HTTPS forcieren für Admin-Konsole
Um eine Anmeldung an der Admin-Konsole per HTTPS zu erzwingen, müssen die folgenden zwei Einträge editiert werden. Wichtiger Hinweis: Da durch diese Einstellungen auch die Links auf der Integration-Server-Hauptseite angepasst werden (Lobster Integration, Web Monitor, Portal, Admin-Konsole), muss dann auch in der Konfigurationsdatei ./etc/hub.xml und nicht nur in ./etc/admin.xml der HTTPS-Listener aktiviert werden (siehe oben). Die direkten HTTP-Links gehen aber weiterhin. Wird für die Admin-Konsole nicht der Port 9000 verwendet, sondern wie hier der Port 9443, dann muss evtl. der Link auf der Seite ./webapps/root/index.html manuell angepasst werden (b ei Neuinstallationen (nicht Updates) ab Version 4.6.9 ./etc/admin/webapps/root/index.html ). Der direkte Link auf die Admin-Konsole geht aber wie konfiguriert.
Konfigurationsdatei ./etc/startup.xml
<!-- admin console: use SSL & port -->
<
Call
name
=
"setAdminUrlParams"
><
Arg
type
=
"boolean"
>true</
Arg
><
Arg
type
=
"int"
>9443</
Arg
></
Call
>
Konfigurationsdatei ./etc/webdefault.xml
<!-- redirect to https -->
<
security
-constraint>
<
web
-resource-collection>
<
web
-resource-name>Everything</
web
-resource-name>
<
url
-pattern>/*</
url
-pattern>
</
web
-resource-collection>
<
user
-data-constraint>
<
transport
-guarantee>CONFIDENTIAL</
transport
-guarantee>
</
user
-data-constraint>
</
security
-constraint>
HTTPS-Listener aktivieren (DMZ-Server)
Um HTTPS auf dem DMZ-Server zu aktivieren, führen Sie die selben Schritte in der Konfigurationsdatei ./etc/hub.xml aus, wie oben beschrieben, aber in der Datei auf dem DMZ-Server. Als anzugebendes Zertifikat wird hier ebenfalls ein Zertifikat vom inneren System (Lobster Integration) verwendet.
Let's Encrypt (automatisches Zertifikats-Handling)
Siehe Abschnitt Let's Encrypt/ACME/Certbot (kostenfrei und automatisch Zertifikate von Certificate Authority erhalten und erneuern).