一.概要
1.1 問題の説明
HTTP は Hypertext Transfer Protocol であり、情報はクリア テキストで送信されます。 HTTPSプロトコルは、SSL+HTTPプロトコルで構築された暗号化通信と本人認証が可能なネットワークプロトコルで、HTTPプロトコルよりも安全です。
HTTPS 環境で WebSocket を構成するには 2 つの方法があり、以下で詳しく説明します。
注: バージョン 11.0.2 以降のレポート プロジェクトには、コンテナー Websocket ソリューションが追加されています。 最初にプログラムが使用できるかどうかを確認することをお勧めします:コンテナー Websocket ソリューション
ユーザー操作不要、手動設定不要、追加ポート開放不要 Webコンテナ付属のWebSocketを利用してシステムが自動で接続し、ポートはhttpポートを再利用します。
1.2 ソリューション
方法 1: Nginx を使用しない場合は、Web サーバーで直接 SSL を構成できます。
方法 2: Nginx リバース プロキシ サーバーを使用する場合、Nginx で SSL を構成できますが、Tomcat などのアプリケーション サーバーは SSL を構成しません。 このように、クライアントと Nginx は https 通信、Nginx と Tomcat は proxy_pass 経由で http 通信を行います。
注 1: データ決定システムのビジュアル インターフェイスを介して WebSocket を設定することがサポートされています。 詳細について:標準 第 3 章 。
注2: 下図のHTTPS設定がデータ判定システムに表示されない場合は、Websocket接続が正しく設定されており、変更の必要がないことを意味します。
2.方法 1: プロキシが未構成
例として、方法 1 を使用して Windows システムで WebSocket を構成します。
2.1 HTTPS 環境をセットアップ
HTTPS 環境のセットアップの詳細については:HTTPS アクセス用の SSL 証明書の設定。
2.2 データベースを構成
FineDBのfine_conf_entityテーブルに、以下の4つのパラメーター項目を追加します.パラメーター情報は、次の表に示されています、
新しい手順については:ビルトイン HSQL データベース FineDB の帳票。
パラメータ項目 | パラメータ値 |
---|---|
WebSocketConfig.protocol | ssl(デフォルト) |
WebSocketConfig.keyStore | %TOMCAT_HOME%\conf\server.xmlの keystoreFile フィールドの値 |
WebSocketConfig.keyStorePassword | %TOMCAT_HOME%\conf\server.xmlの keystorePass フィールドの値 |
WebSocketConfig.keyStoreFormat | JKS(デフォルト) |
WebSocketConfig.keyStore・WebSocketConfig.keyStorePassword の構成を次の図に示します。
注: fine_conf_entity テーブルの WebSocketConfig.keyStore の値は、相対パスではなく絶対パスである必要があります。
データベース テーブルの新しい情報を次の図に示します。
構成が完了したら、レポート サーバーを再起動して有効にします。
注: Https が WebSocket を構成すると、Http での WebSocket 要求は使用できなくなります。
3. 方法 2: プロキシを構成
例として、Linux+Nginx+Tomcat で方法 2 を使用して WebSocket を構成します。
注: 必要でない限り、自己署名証明書を使用しないでください. 自己署名証明書を使用すると、一部のレコードが失われる可能性があります. 詳細については、セクション 4.1 を参照してください.
3.1 自己署名 SSL 証明書を生成
注: 証明書を既にお持ちの場合は、この手順を省略できます。
1)OpenSSL をインストールして確認
# yum install openssl openssl-devel
# openssl version -a
2)鍵ファイル server.key を生成
# openssl genrsa -des3 -out server.key 2048
キーファイルを生成する際にパスワードの設定を求められますので、設定後はこのパスワードを覚えておく必要があります。
これにより、server.key ファイルが生成されます。 このファイルを使用すると、パスワードが頻繁に要求されます。 Nginx が server.key をロードすると、起動時にパスワードを要求されます。
ご不便な場合は、以下のコマンドで server.key を生成すると、パスワードを入力する必要がなくなります。
# openssl rsa -in server.key -out server.key
3) サーバー証明書用のアプリケーション ファイル server.csr を生成
# openssl req -new -key server.key -out server.csr
Country Name に CN を入力し、Common Nameにホスト名を入力します。そうでない場合、ブラウザーは安全ではないというメッセージを表示します。残りは空白のままにできます。
4)CA 証明書 ca.crt を生成
# openssl req -new -x509 -key server.key -out ca.crt -days 3650
CA 証明書は、独自の証明書に署名するために使用されます。
5)サーバー証明書 server.crt を生成
# openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
6) 生成された 5 つのファイルを確認します。server.crt と server.key は、Nginx に必要な証明書ファイルです。
3.2 NginxでHTTPSを構成
HTTP のデフォルト ポートは 80 で、HTTPS のデフォルト ポートは 443 です。
Nginx 構成フルバージョン:nginx-demo .conf
注: nginx.conf を変更した後、Nginx を再起動するときに reload を使用しないでください。stop と start を使用してください。そうしないと、構成が有効にならない場合があります。
1)ポート 443 を構成
2)WebSocket ポートの構成
WebSocketにHTTPSを設定すると問題が発生しやすいため、クラスタ起動後、スマート運用保守> メモリ管理 でリアルタイムメモリグラフが表示されるか確認できます。
Nginx 転送はデフォルトでポート 38889 をリッスンし、ノードの WebSocket はデフォルトでポート 38888 をリッスンしますが、これは自分で変更できます。 転送ポートは、fine_conf_entity テーブルのパラメーター項目 WebSocketConfig.requestPorts であり、以下に示すように、複数の転送用に複数のポートの構成をサポートします。
id | value |
---|---|
WebSocketConfig.port | 38888 |
WebSocketConfig.requestPorts | 38889 |
転送ポートはフォアグラウンドで直接構成できます。ドキュメントを参照してください:標準 第 3 章
注: 2019-09-27 以前のバージョンの JAR パッケージの場合、転送ポートの有効なパラメーター アイテムは WebSocketConfig.requestPort であり、1 つのポートのみをサポートします。 次のように:
id | value |
---|---|
WebSocketConfig.port | 38888 |
WebSocketConfig.requestPort | 38889 |
3)HTTP から HTTPS へ構成
4)Nginx クロスドメイン設定
注: Nginx クロスドメイン構成は、既に構成されている「add_header access-control-allow-Origin *;」のフロント エンドに追加することはできません。このフロントエンドは既に構成されているはずです。これを追加すると、フロントエンドがクロスドメイン構成を選択できなくなり、エラーが発生します。
4. 注意事項
4.1 一部のブラウザ設定が無効
問題の説明:
構成に方法 2 を使用した後も、Firefox ブラウザー アクセスは空白のままであり、IE ブラウザー アクセス テンプレートは記録されません。
これは、自己署名証明書がブラウザーによって信頼されておらず、例外が手動で追加されているためページにアクセスできますが、ポート 38888 はアクセスできないため、ブラウザーが Socket 要求をインターセプトするためです。
ソリューション:
F12を押し、傍受されたリクエストを見てコピーし、ポート 38888 に直接アクセスしてセキュリティ例外を追加するか、手動で追加します。
このようにして、ブラウザは次の図に示すようにリアルタイム メモリを表示できます。
4.2 その他
1)キーパス:
Tomcat構成のserver.xmlで絶対パス/相対パスが利用できます。
データ決定システムの「システム管理 > 標準 > https 設定」の「SSL キーパス」は、絶対パスのみをサポートします。
2)デザイナは HTTPS の構成をサポートしておらず、EXE でインストールされた BI は HTTPS の構成をサポートしていません。
3)Nginx が https で構成されている場合は、[管理 > 一般> https] 設定で構成しないでください。
4)Tomcat プロジェクトは https で構成されており、http と https の両方がプロジェクトにアクセスできます。 ただし、websocket は両方をサポートできず、https 接続は正常で、 http 接続は失敗します。
Nginx プロジェクトには影響はなく、websocket は同時にサポートできます。