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.
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
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
# An alternative list with additional directives can be obtained from
# https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
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 unter https://cbonte.github.io/haproxy-dconv/2.0/configuration.html#5.1.
Zum Beispiel:
frontend ft_web
bind *:8443 ssl crt /certs/haproxy.pem name sslweb
* 
Das Binden des Ports und Zertifikats ist erforderlich, wenn Sie ThingWorx Flow in einer ThingWorx HA Umgebung installiert haben.
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 unter https://cbonte.github.io/haproxy-dconv/2.0/configuration.html#5.2.
backend platform
server platform1 platform1:8443 ssl verify none
server platform2 platform2:8443 ssl verify none
Beispiel für ThingWorx Flow
Wenn Sie ThingWorx Flow in einer ThingWorx HA Umgebung installiert haben, fügen Sie die Back-End-Konfigurationsinformationen für ThingWorx Flow hinzu:
backend flow
server nginx <NGinx_IP>:443 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 && \
Beispiel für ThingWorx Flow
Wenn Sie ThingWorx Flow in einer ThingWorx HA-Umgebung installiert haben, gehen Sie folgendermaßen vor:
1. Erstellen Sie den Ordner certs mit allen erforderlichen Berechtigungen unter /.
2. Führen Sie den folgenden Befehl aus, um das Zertifikat zu erstellen:
sudo openssl req -newkey rsa:2048 -nodes -x509 -days 365 -keyout haproxy.key -out haproxy.crt -subj “/CN=<Host_für_Lastenausgleich>” && sudo cat haproxy.crt haproxy.key >> /certs/haproxy.pem
Dieser Befehl erstellt haproxy.crt und haproxy.cfg im Ordner /etc/haproxy und haproxy.pem im Ordner /certs.
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
FLOW_SECURE: true
FLOW_SECURE_PORT: 443
FLOW_PORT: 80
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
War dies hilfreich?