Let’s Encrypt は、自動化された(証明書の発行と更新の両方を自動化した)オープンな無償の認証局です。このセクションでは、Let's EncryptNSX Advanced Load Balancer の統合の構成サマリについて説明します。

SSL/TLS プロトコルは、インターネット接続の安全性を維持するのに役立ちます。2 台のマシン、システム、またはデバイス間で送信される秘密データを保護し、侵入者が 2 台のマシン/システム/デバイス間で転送される情報を読み取ったり変更したりできないようにします。SSL/TLS 証明書は、2 台のマシン、システム、またはデバイス間の安全で暗号化された接続を容易にします。しかし、SSL/TLS 証明書にはいくつかの課題があります。

  • 証明書の手動取得

  • CA が署名した証明書に関連したコスト

Let's Encrypt を使用すると、上記のすべての課題が解決されます。詳細については、「Let's Encrypt」を参照してください。

Let's Encrypt の使用

証明書を発行する前に、Let's Encrypt サーバは、リクエスタが ACME 標準で定義されている「チャレンジ」を使用してその証明書のドメイン名を制御していることを検証します。Let's Encrypt は、ACME プロトコルを使用してユーザーが指定されたドメイン名を制御していることを確認し、ユーザーに証明書を発行します。エージェント/クライアントがドメインの制御を証明できる方法はさまざまあります。

  • ドメイン下で DNS レコードをプロビジョニングする(CSR のコモン ネームに従う)。

  • 既知の URI で HTTP リソースをプロビジョニングする。

注:

NSX Advanced Load Balancer は、ドメイン検証で HTTP-01 チャレンジをサポートします。

HTTP-01 チャレンジ

  • Let's Encrypt は、ACME クライアントにトークンを提供し、ACME クライアントは Web サーバ (http://<YOUR_DOMAIN>/well-known/acme-challenge/<TOKEN>) にファイルを保存します。このファイルには、トークンと、アカウント キーのサムプリントが含まれています。

  • Let's Encrypt にファイルの準備ができたことを ACME クライアントが通知すると、Let’s Encrypt はファイルの取得を試行します(複数の Vantage ポイントから複数回取得することがあります)。

  • 検証チェックで Web サーバから適切な応答が取得されると、検証は成功したと見なされ、証明書が発行されます。

注:

Let's Encrypt CA は HTTP-01 チャレンジのポート 80 で通信するため、ファイアウォールでポート 80 を開く必要があります。また、Let's Encrypt CA はユーザーのネットワーク(NSX Advanced Load Balancer システムが展開されているネットワーク。Let's Encrypt CA はポート 80 からパブリック ネットワークを経由してユーザーの NSX Advanced Load Balancer システムに接続します)にアクセスできる必要があります。

NSX Advanced Load Balancer のポート 80 でリッスンしている仮想サービスがある場合、スクリプトは仮想サービスを作成しません。それ以外の場合、スクリプトはポート 443/カスタム SSL ポートでリッスンしているそれぞれの仮想サービスに対してポート 80 でリッスンする仮想サービスを自動的に作成します。

ドメイン検証の詳細については、次の URL を参照してください。

Let's Encrypt の構成

Let's EncryptNSX Advanced Load Balancer の統合の構成サマリは次のとおりです。

  1. 証明書の取得と更新に役立つスクリプトを取得します。

  2. スクリプトをコントローラ スクリプトとして NSX Advanced Load Balancer システムに追加します。

  3. ユーザー アカウントをユーザーに追加します(アクセスが制限された場合のみ)。

  4. NSX Advanced Load Balancer システムで証明書管理プロファイルを作成します。

  5. NSX Advanced Load Balancer システムに仮想サービスを追加します。

  6. FQDN がパブリック IP アドレスに解決され、ファイアウォールでポート 80 が開いていることを確認します。

  7. CSR を作成し、構成済みの証明書管理プロファイルを選択します。

  8. 証明書のリストを確認します。Let's Encrypt CA は署名付き証明書をプッシュします。

  9. 証明書を構成済みの仮想サービスに関連付けます。

注:

手順 1、2、4 は、DNS-01 Challenge が使用されている場合にのみ必要です。HTTP-01 Challenge の場合、[証明書管理] プロファイルは既に手順 7 でドロップダウンとして使用できるようになりました。また、DNS-01 Challenge の場合は、add_dns_text_record および remove_dns_text_record 関数の独自の実装を提供する必要があります。

NSX Advanced Load Balancer システムの構成

NSX Advanced Load Balancer 用に Let's Encrypt を構成するには、次の手順を実行します。

  1. letsencrypt_mgmt_profile で、使用可能なスクリプトをダウンロードします。ファイルをダウンロードするには、[Raw] オプションをクリックします。使用可能なコードをコピーします。

  2. NSX Advanced Load Balancer Controller で、[テンプレート] > [スクリプト] > [ControlScript] の順に移動し、[作成] をクリックします。

  3. わかりやすい名前を追加し、手順 1 でコピーしたコードを [ControlScript のインポートまたは貼り付け] フィールドに貼り付けます。構成を [保存] します。

  4. [管理] > [ロール] の順に移動してカスタム ロールを構成します。このロールの仮想サービス、アプリケーション プロファイル、SSL/TLS 証明書、および証明書管理プロファイルに対して読み書きアクセスが有効になっていることを確認します。

  5. ユーザーを追加し、必要なすべての詳細を入力し、構成済みのカスタム ロールを選択します。

  6. [テンプレート ] > [セキュリティ ] > [証明書管理] の順に移動し、[作成] をクリックします。

  7. 意味のある名前を入力し、構成済みのコントロール スクリプトを選択してカスタム パラメータを有効にし、次の例に示すようにカスタム パラメータを追加します。

    注:

    管理者アカウントを使用しないことをお勧めします。カスタム ロールを持つユーザー アカウント(アクセス制限付き)を常に追加します。

  8. [テンプレート] > [セキュリティ] > [SSL/TLS 証明書] の順に移動し、[作成] をクリックし、[アプリケーション証明書] を選択します。

  9. 共通名を入力し、構成済みの証明書管理プロファイルを選択し、関連するすべての詳細を追加し、構成を保存します。

注:

証明書のコモン ネーム (CN) としてアプリケーション ドメイン名を使用して仮想サービスが構成されていることを確認します。証明書の CN は、仮想サービスのアプリケーション ドメイン名と一致する必要があります。FQDN(証明書の CN または仮想サービスのアプリケーション ドメイン名が IP アドレスに解決され、ドメインにアクセスできる必要があります)。

数分後に、証明書のリストを確認します。Let’s Encrypt CA によってプッシュされた証明書が表示されます。証明書を構成済みの仮想サービスに関連付けます。

ログ

ログを表示するには、構成済みの仮想サービスの重要でないログを有効にし、証明書を生成します。ログの例を次に示します。



証明書更新の自動化

コントローラのプロパティから、ssl_certificate_expiry_warning_days を構成できます。デフォルトでは、ssl_certificate_expiry_warning_days は 30 日、7 日、1 日に設定できます。この設定は、必要に応じて変更できます。構成された設定に基づいて証明書の更新が必要な場合、スクリプトは有効になり、証明書の更新が自動的に処理されます。

注:

Let’s Encrypt CA は、レート制限を適用します。したがって、証明書の更新がレート制限に影響を与えないことを確認します。

インポートされた証明書の自動証明書更新

インポートされた証明書の自動証明書更新は、次のものに実行できます。

  • NSX Advanced Load Balancer で生成され、Let's Encrypt によって署名され、NSX Advanced Load Balancer にインポートされた CSR。証明書管理プロファイルが証明書用に構成されている場合、最後から 2 番目の間隔で更新が試行されます。デフォルトでは、コントローラは有効期限の 30 日前、7 日前、および 1 日前にイベントを生成します。この設定では、有効期限の 7 日前に証明書の更新が試行されます。

  • NSX Advanced Load Balancer にインポートされた証明書(NSX Advanced Load Balancer の外部で Let's Encrypt が手動で署名したもの)とキー(CSR は NSX Advanced Load Balancer で作成されていません)。

CSR が生成され、Let's Encrypt CA によって署名されたら、ユーザーがアップロードした証明書をこの新しく生成された証明書によって更新します。この証明書は、デフォルトの自動更新サイクルに入ります。

強制証明書更新の構成

次のものにオンデマンドの強制証明書更新を構成できます。

NSX Advanced Load Balancer で生成され、Let's Encrypt によって手動で署名され、NSX Advanced Load Balancer にインポートされた CSR。証明書更新は、API エンドポイントを使用してバックエンドから実行されます。

/api/sslkeyandcertificate/{uuid}/renew

NSX Advanced Load Balancer バージョン 22.1.3 以降では、ユーザー インターフェイスを使用した強制証明書更新がサポートされます。

  1. 強制証明書更新を構成するには、次の手順を実行します。

  2. NSX Advanced Load Balancer ユーザー インターフェイスから [テンプレート] > [セキュリティ] > [SSL/TLS 証明書] の順に移動して必要な証明書を選択し、[更新] アイコンをクリックします。



  3. 表示される確認プロンプトで [はい、続行します] をクリックします。

  4. 証明書の更新に成功すると、次のメッセージが表示されます。



Let's Encrypt 証明書に対するライフサイクル管理のネイティブ サポート

NSX Advanced Load Balancer 22.1.3 以降では、デフォルトで Let's Encrypt 証明書管理プロファイルを CSR の作成時に添付できます。コントローラが起動すると、Let's Encrypt の証明書管理プロファイルがデフォルトで使用可能になります。名前、テナント、パスワードを構成します。

Let's Encrypt 管理プロファイルは、アプリケーション プロファイルの [証明書管理プロファイル] フィールドで選択できます。

注:

ネイティブ サポートの場合、現在 NSX Advanced Load Balancer では HTTP-01 チャレンジにのみ対処しており、DNS-01 チャレンジはサポートされていません。

追加情報

  • レート制限の詳細については、「レート制限」を参照してください。

  • SSL/TLS 証明書の詳細については、「SSL 証明書」を参照してください。