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
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
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