HAProxy 用 SSL/TLS の設定
ThingWorx HA クラスタを使用している場合、HAProxy 用に SSL または TLS を設定できます。
外部 SSL および内部 SSL 用に HAProxy を設定できます。証明書ファイルを提供する必要があります。ThingWorx はパスベースのルーティングでリクエストオブジェクトにアクセスする必要があるので、パススルー SSL は使用できません。HAProxy での SSL の設定には多数のオプションがあります。以下は参考としてのみ提供されています。詳細については、
https://cbonte.github.io/haproxy-dconv/2.0/configuration.html を参照してください。
クライアントから HAProxy への外部 SSL
global コンフィギュレーションでは、証明書とプライベートキーのデフォルトの場所をオプションで設定できます。フロントエンドコンフィギュレーションでは、暗号およびサポートされる TLS レベルを設定できます。以下に例を示します。
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
フロントエンドセクションは受信エンドポイントの位置です。ここで、使用するバインドポートと証明書を設定する必要があります。バインドコンフィギュレーションの詳細については、
https://cbonte.github.io/haproxy-dconv/2.0/configuration.html#5.1 を参照してください。
以下に例を示します。
frontend ft_web
bind *:8443 ssl crt /certs/haproxy.pem name sslweb
|
ThingWorx HA 環境で ThingWorx Flow をインストールしている場合、ポートと証明書をバインドすることが不可欠です。
|
HAProxy からアプリケーションへの内部 SSL
内部 SSL はバックエンドサーバーごとに設定されます。サーバーごとに異なる設定を行えます。以下の例では、すべてのプラットフォームサーバーが SSL をサポートし、ポート 8443 でリクエストを受信します。サーバーのエンドポイントは、その場所を指して SSL を使用するように設定されています。この例では自己署名証明書を使用するので、verify が
none に設定されています。サーバーコンフィギュレーションオプションの詳細については、
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
ThingWorx Flow での例
ThingWorx HA 環境で ThingWorx Flow をインストールしている場合、バックエンド ThingWorx Flow コンフィギュレーション情報を追加します。
backend flow
server nginx <NGinx_IP>:443 check ssl verify none
自己署名証明書の作成
以下に例を示します。
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 && \
ThingWorx Flow での例
ThingWorx HA 環境で ThingWorx Flow をインストールしている場合、次の操作を行います。
1. / の下に、必要なすべてのアクセス許可がある certs フォルダを作成します。
2. 以下のコマンドを実行して証明書を作成します。
sudo openssl req -newkey rsa:2048 -nodes -x509 -days 365 -keyout haproxy.key -out haproxy.crt -subj “/CN=<ロードバランサーのホスト>” && sudo cat haproxy.crt haproxy.key >> /certs/haproxy.pem
このコマンドによって、/etc/haproxy フォルダの下に haproxy.crt および haproxy.cfg が作成され、/certs フォルダの下に haproxy.pem が作成されます。
Docker の使用
certs および haproxy.cfg ファイル内の公式の HAProxy コンテナとマウントを使用できます。内部 HAProxy コンテナでは以下のコンフィギュレーションがサポートされています。
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
証明書は /certs フォルダにマウントする必要があります。
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