SSL/TLS für HAProxy konfigurieren
Sie können SSL oder TLS für HAProxy konfigurieren, wenn Sie ThingWorx HA Clustering verwenden.
HAProxy kann für externes und internes SSL eingerichtet werden. Sie müssen die Zertifikatdateien angeben. Sie können Passthrough-SSL nicht verwenden, da ThingWorx Zugriff auf das Anforderungsobjekt für pfadbasiertes Routing benötigt. Es gibt viele Optionen für die Konfiguration von SSL in HAProxy. Folgendes gilt nur zur Referenz. Weitere Informationen finden Sie unter
https://cbonte.github.io/haproxy-dconv/2.0/configuration.html.
|
Wenn SELinux HAProxy blockiert, passen Sie die SELinux-Konfigurationen entsprechend an.
|
Externes SSL von Clients zu HAProxy
In der global-Konfiguration können Sie optionale Standardspeicherorte für Zertifikate und private Schlüssel einrichten. In der Front-End-Konfiguration können Sie die Verschlüsselungen und unterstützten TLS-Ebenen konfigurieren. Zum Beispiel:
global
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
Ohne zusätzliche TLS-Konfiguration wählt HAProxy automatisch eine Cipher-Suite basierend auf dem Client und den verfügbaren Cipher-Suites von HAProxy aus.
Sie können überprüfen, welche TLS-Version von einer bestimmten HAProxy-Version unterstützt wird, indem Sie den Befehl haproxy-vv ausführen.
[root@hasrv]# haproxy -vv
Omitted output.
…
Built with OpenSSL version : OpenSSL 1.1.1k FIPS 25 Mar 2021
Running on OpenSSL version : OpenSSL 1.1.1k FIPS 25 Mar 2021
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports : TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
…
Omitted output.
Sie können sehen, dass HAProxy mit der Bibliothek OpenSSL 1.1.1k erstellt wurde. Daher hat HAProxy TLSv1.3-fähige Ciphers, was bedeutet: Wenn der Client dieselben Funktionen hat, wird für die TLS-Kommunikation TLSv1.3 verwendet.
|
Es wird dringend empfohlen, die mit OpenSSL 1.1.1 oder höher erstellte HAProxy-Version zu verwenden. Frühere Versionen der Bibliothek OpenSSL unterstützen TLSv1.3 nicht.
|
Informationen zum manuellen Konfigurieren von Ciphers finden Sie in den zugehörigen Konfigurationseinstellungen:
• ssl-default-bind-ciphers – maximal für Front-End TLSv1.2. Alle TLSv1.3/TLSv1.2-fähigen Ciphers funktionieren im Modus TLSv1.2.
Beispiele für die manuelle Cipher-Konfiguration finden Sie unter
SSL Configuration Generator.
Der Front-End-Bereich ist der Ort des eingehenden Endpunkts. Hier sollten Sie den zu verwendenden Bindungsport und das zu verwendende Zertifikat konfigurieren. Weitere Informationen zu den Bindungskonfigurationen finden Sie im englischen Handbuch
HAPROXY Configuration Manual.
Zum Beispiel:
frontend ft_web
bind *:8443 ssl crt /certs/haproxy.pem name sslweb
Internes SSL von HAProxy zu Anwendungen
Internes SSL wird pro Back-End-Server konfiguriert. Jeder Server kann unterschiedliche Einstellungen aufweisen. Im folgenden Beispiel unterstützen alle Plattformserver SSL und empfangen Anforderungen auf Port 8443. Der Server-Endpunkt ist so konfiguriert, dass er auf diesen Ort verweist und SSL verwendet. Dieses Beispiel verwendet selbstsignierte Zertifikate, sodass "verify" auf
none festgelegt ist. Weitere Informationen zu Serverkonfigurationsoptionen finden Sie im englischen Handbuch
HAPROXY Configuration Manual.
backend platform
server platform1 platform1:8443 ssl verify none
server platform2 platform2:8443 ssl verify none
Back-End- und Front-End-Beispiel für eMessage Connector
Wenn Sie HAProxy in der Mitte in der Kommunikation zwischen Axeda Agent und eMessage Connector nutzen, fügen Sie HAProxy die folgenden zusätzlichen Konfigurationen hinzu:
Erstellen Sie ein neues Back-End im Front-End für eMessage Connector:
frontend ft_web
bind *:<HAProxy listening port> ssl crt /certs/haproxy.pem name sslweb
#path based routing to eMessage connector
acl emsg path_beg /eMessgae /lwPing /upload /download
use_backend emessage if emsg #conditional forwarding to the emessage backend
default_backend platform
Erstellen Sie ein neues Back-End für eMessage Connector:
backend emessage
balance roundrobin
server emessage <eMessage port> check port 9009 check ssl
verify none
Selbstsignierte Zertifikate erstellen
Zum Beispiel:
openssl req -newkey rsa:2048 -nodes -x509 -days 365 -keyout haproxy.key -out haproxy.crt -subj "/CN=$HAPROXY_SSL_SERVER_CERT_CN" && \
cat haproxy.crt haproxy.key >> /certs/haproxy.pem
chmod 755 /certs/haproxy.pem && \
Docker verwenden
Sie können den offiziellen HAProxy-Container verwenden und in den Dateien certs und haproxy.cfg mounten. Der interne HAProxy-Container unterstützt die folgenden Konfigurationen:
PLATFORM_ADDRESSES: platform1,platform2,platform3
CXSERVER_ADDRESSES: cxserver1,cxserver2
HAPROXY_STAT_USER: admin
HAPROXY_STAT_PASSWORD: thingworx
SSL_ENABLED: true
SSL_CERT_PATH: /certs/haproxy.pem
LOG_LEVEL: debug
PLATFORM_SECURE: true
PLATFORM_SECURE_PORT: 8443
PLATFORM_PORT: 8080
CXSERVER_SECURE: true
CXSERVER_SECURE_PORT: 8443
CXSERVER_PORT: 8080
Zertifikate sollten im Ordner /certs gemountet werden:
haproxy:
image: artifactory.rd2.thingworx.io/twxdevops/tw-lb-haproxy:latest
container_name: haproxy
ports:
- 9100:8080
- 9143:8443
- 1936:1936
environment: *haproxy-env
volumes:
- certs:/certs