検索

15.12. SNI を使用した TLS 終端 HTTPS ロードバランサーの作成

download PDF

以下の手順で、Transport Layer Security (TLS) を介してインターネットからアクセス可能な TLS 終端 HTTPS ロードバランサーを作成し、暗号化されていない HTTP プロトコルを通じてリクエストをバックエンドサーバーに分散する方法を説明します。この構成には、複数の TLS 証明書が含まれ Server Name Indication (SNI) テクノロジーを実装するリスナーが 1 つあります。

前提条件

  • TCP ポート 80 でセキュアではない HTTP アプリケーションをホストするバックエンドサーバーが含まれるプライベートサブネット
  • インターネットからアクセス可能な共有外部 (パブリック) サブネット
  • TLS 公開鍵の暗号化が以下のように設定されている。

    • ロードバランサーの仮想 IP アドレス (例: www.example.com および www2.example.com) に割り当てられた DNS 名用に、複数の TLS 証明書、鍵、および中間証明書チェーンが外部認証局 (CA) から取得される。
    • 証明書、鍵、および中間証明書チェーンが、現在のディレクトリー内の個別ファイルに保存される。
    • 鍵および証明書は PEM 形式でエンコードされる。
    • 鍵はパスフレーズで暗号化されない。
    • 中間証明書チェーンには PEM 形式でエンコードされた複数の証明書が含まれ、チェーンを形成する。
  • Key Manager サービス (barbican) を使用するように Load-balancing サービス (octavia) が設定されている。詳しい情報は、『 Manage Secrets with OpenStack Key Manager』 を参照してください。

手順

  1. SNI 一覧の TLS 証明書ごとに、鍵 (server.key)、証明書 (server.crt)、および中間証明書チェーン (ca-chain.crt) を 1 つの PKCS12 ファイル (server.p12) に組み合わせます。

    以下の例では、それぞれの証明書 (www.example.com および www2.example.com) 用に、2 つの PKCS12 ファイル (server.p12 および server2.p12) を作成します。

    注記

    丸かっこ内の値は例として示しています。これらの例を実際のサイトに適した値に置き換えてください。

    $ openssl pkcs12 -export -inkey server.key -in server.crt -certfile ca-chain.crt -passout pass: -out server.p12
    
    $ openssl pkcs12 -export -inkey server2.key -in server2.crt -certfile ca-chain2.crt -passout pass: -out server2.p12
  2. Key Manager サービスを使用して、PKCS12 ファイルのシークレットリソース (tls_secret1 および tls_secret2) を作成します。

    $ openstack secret store --name='tls_secret1' -t 'application/octet-stream' -e 'base64' --payload="$(base64 < server.p12)"
    $ openstack secret store --name='tls_secret2' -t 'application/octet-stream' -e 'base64' --payload="$(base64 < server2.p12)"
  3. パブリックサブネット (public-subnet) にロードバランサー (lb1) を作成します。

    $ openstack loadbalancer create --name lb1 --vip-subnet-id public-subnet
  4. 次のステップに進むためには、作成したロードバランサー (lb1) がアクティブでオンライン状態でなければなりません。

    ロードバランサーの応答が ACTIVE および ONLINE のステータスになるまで、openstack loadbalancer show コマンドを実行します。(複数回このコマンドを実行しなければならない場合があります。)

    $ openstack loadbalancer show lb1
  5. TERMINATED_HTTPS リスナー (listener1) を作成し、SNI を使用して両方のシークレットリソースを参照します。

    リスナーのデフォルト TLS コンテナーとして tls_secret1 を参照します。)

    $ openstack loadbalancer listener create --protocol-port 443 \
    --protocol TERMINATED_HTTPS --name listener1 \
    --default-tls-container=$(openstack secret list | awk '/ tls_secret1 / {print $2}') \
    --sni-container-refs $(openstack secret list | awk '/ tls_secret1 / {print $2}') \
    $(openstack secret list | awk '/ tls_secret2 / {print $2}') -- lb1
  6. プール (pool1) を作成し、リスナーのデフォルトプールに設定します。

    $ openstack loadbalancer pool create --name pool1 --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP
  7. プライベートサブネット (private-subnet) 上のセキュアではない HTTP バックエンドサーバー (192.0.2.10 および 192.0.2.11)をプールに追加します。

    $ openstack loadbalancer member create --subnet-id private-subnet --address 192.0.2.10 --protocol-port 80 pool1
    $ openstack loadbalancer member create --subnet-id private-subnet --address 192.0.2.11 --protocol-port 80 pool1
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.