次世代プラットフォーム

NGINX を使用したリバース・プロキシーの構成

IBM Sterling® Order Managementシステム (次世代)では、デバイスはサーバーと通信するときに mTLSを使用する必要があります。 通信中に mTLSを使用するには、 Sterling™ Order Managementシステム セルフサービスを使用して生成されるクライアント証明書でデバイスを構成する必要があります。
クライアント証明書を使用することで、通信の安全性を高めている。 ただし、クライアント証明書を使用すると、管理コストが増加します。 管理コストの影響は、使用されているデバイス管理インフラストラクチャーによって異なります。 影響を軽減するために、使用できるいくつかのオプションを以下に示します。
  • デバイスごとに固有のクライアント証明書を活用する。 これは主にコストに影響します。 セキュリティーの利点は、個々の証明書を取り消すことによって、個々のデバイスがサービスへのアクセスをブロックできることです。
  • 類似したデバイスをグループ化し、グループごとに固有の証明書をインストールする。 1 つのストア内のすべてのデバイスは、単一のクライアント証明書を使用できます。 このグループ化は任意のサイズにすることができ、セキュリティーの専門家が決定する必要があります。
  • クライアント証明書を使用して構成されたリバース・プロキシー・サーバーを利用して、 Sterling Order Management System サーバーとの通信を管理します。 この構成では、デバイスは証明書を使用して構成されず、代わりにプロキシー・サーバーに依存してセキュア接続を管理します。

選択するオプションは、セキュリティー・ポリシーを満たしているかどうか、およびそれが許容リスクであるかどうかを判別するために、セキュリティー専門家が検討する必要があります。

このページでは、リバース・プロキシー・サーバーを構成する方法を 1 つのみ説明します。 このメソッドは、NGINX サーバーを使用してプロキシー・サーバーを実装します。このメソッドは、デモンストレーションまたはテストの目的でのみ検討する必要があります。 実稼働環境では、以下の例を使用しないでください。 NGINX サーバーをリバース・プロキシーとして使用する場合は、セキュリティーの専門家に相談して、サーバーの実動準備を支援してください。 代替ソリューションは可能であり、ご使用のネットワークで既に使用可能になっている可能性があります。 例えば、ネットワークで F5 ファイアウォールを使用している場合は、リバース・プロキシーとしてセットアップすることができます。 リバース・プロキシーの実装に使用されるハードウェアまたはソフトウェアに関係なく、デバイスとプロキシーの間の通信を保護することが重要です。 この件に関する詳細情報を提供することは、本書では適用されません。

イメージ

前提

  • 次世代プラットフォームで Sterling Order Management System を使用し、ネットワーク内のすべての Sterling Order Management System クライアントに対して単一のクライアント証明書を作成して管理する必要があります。
  • Docker および NGINX テクノロジーについて十分に理解している。
  • Linux コマンド・ライン・システムを使用できます。
  • あなたは、ネットワーキングの基本概念について公平に理解しています。

前提条件

  • 次世代プラットフォーム上の Sterling Order Management System 環境。
  • クライアント証明書を生成するためのアクセス権限を持つ、 「セルフサービス」 内のアカウント。
  • を理解する Docker.
  • オープンSSLを使用するためのアクセス。

手順

コンテナー・ベースの NGINX を使用して、以下のステップを実行します。
注: ホストに直接インストールされる NGINX には、同じ default.conf ファイル設定が適用されます。
  1. NGINX ファイルをローカル・コンピューターにコピーします。
    1. NGINX 構成ファイルを処理する一時コンテナーを開始します。
      docker run --name tmp-nginx-container -d nginx
    2. デフォルトの nginx ディレクトリーをローカル・コンピューター上のフォルダー ( $HOME/nginxなど) に解凍します。
      docker cp tmp-nginx-container:/etc/nginx/$HOME/nginx/tmp/
    3. 一時コンテナーを削除します。
      docker rm -f tmp-nginx-container
      
  2. Sterling Order Management System 環境でクライアント証明書を作成します。
    1. セルフサービスで、環境用のクライアント証明書を生成し、 $HOME/nginx などのローカルディレクトリに証明書を保存します。
    2. 以下のコマンドを実行して、鍵と証明書を .pem ファイルとして抽出し、プロンプトが出されたらパスワードを指定します。
      cd $HOME/nginx
      openssl pkcs12 -in $FILENAME.p12 -nokeys -out client.pem
      openssl pkcs12 -in $FILENAME.p12 -nocerts -nodes -out client.key
      
  3. OpenSSLを使用して NGINX 用の自己署名証明書を作成します。
    cd $HOME/nginx
    openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
    
  4. NGINX を構成します。
    1. テキスト・エディターで $HOME/nginx/conf.d/default.conf を開き、既存の構成を削除します。
    2. 以下の設定を $HOME/nginx/conf.d/default.conf にコピーし、 proxy_pass の両フィールドの URLを、お使いの環境に適した URL に置き換えてください。
      server {
              listen 80;
              listen [::]:80;
              server_name localhost;
      
              location / {
                  proxy_pass https://EXAMPLE-prod-4.oms.supply-chain.ibm.com/;
                  proxy_ssl_server_name on;
                  proxy_http_version 1.1;
                  proxy_ssl_certificate /etc/nginx/client.pem;
                  proxy_ssl_certificate_key /etc/nginx/client.key;
                  proxy_ssl_session_reuse on;
                  ######
                  ## Settings specific to a Docker container mapped to non-80/443 port on host
                  absolute_redirect off;
              }
          }
      
          server {
              listen 443 ssl;
              listen [::]:443 ssl;
              server_name localhost;
              ssl_certificate     /etc/nginx/certificate.pem;
              ssl_certificate_key /etc/nginx/key.pem;
              ssl_protocols       TLSv1.2;
              ssl_ciphers         HIGH:!aNULL:!MD5;
              location / {
                  proxy_pass https://EXAMPLE-prod-4.oms.supply-chain.ibm.com/;
                  proxy_ssl_server_name on;
                  proxy_http_version 1.1;
                  proxy_ssl_certificate /etc/nginx/client.pem;
                  proxy_ssl_certificate_key /etc/nginx/client.key;
                  proxy_ssl_session_reuse on;
                  ######
                  ## Settings specific to a Docker container mapped to non-80/443 port on host
                  absolute_redirect off;
              }
          }
  5. SSL ポートおよび非 SSL ポートのオプションと、コンテナー内の /etc/nginx/ にマップされているホスト上の $HOME/nginx ディレクトリーを指すボリュームを指定して、NGINX コンテナーを開始します。
    docker run --name nginx -p 9080:80 -p 9443:443 --rm -v $HOME/nginx:/etc/nginx/:Z nginx
    
  6. 構成を検証します。
    1. ブラウザーで、以下のいずれかの URL を使用して NGINX にアクセスします。
      http://localhost:9080/smcfs/console/login.jsp
      https://localhost:9443/smcfs/console/login.jsp
      
    2. ブラウザーが Sterling Order Management System 環境にルーティングされ、クライアント証明書の提供を求めるプロンプトが出されないことを確認します。
    3. Sterling Order Management System コンソールにログインし、ブラウザーで Sterling Order Management System コンソールのホーム・ページにリダイレクトされることを確認します。
    4. Sterling Order Management System 環境内の他のすべてのアプリケーションについて、URL を繰り返します。

参照