Let’s Encrypt は、自動化された(証明書の発行と更新の両方を自動化した)オープンな無償の認証局です。次のセクションでは、Let's Encrypt 認証局を NSX Advanced Load Balancer に統合する方法について説明します。
SSL/TLS プロトコルは、インターネット接続を安全に保ち、2 台のマシン、システム、またはデバイス間で送信される秘密データを保護するのに役立ちます。また、侵入者が 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 は、Web サーバの http://<YOUR_DOMAIN>/well-known/acme-challenge/<TOKEN> にファイルを配置するトークンを ACME クライアントに提供します。このファイルには、トークンとアカウント キーのサムプリントが含まれています。
ACME クライアントが、ファイルの準備が整っていることを Let’s Encrypt に通知すると、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 システムに接続します。
スクリプトは、ポート 80 ですでに待機している仮想サービスがない場合にのみ、ポート 443/カスタム SSL ポートで待機中の対応する仮想サービスについて、ポート 80 で仮想サービスを自動的に作成します。
ドメイン検証の詳細については、次のリンクを参照してください。
Let's Encrypt の構成
NSX Advanced Load Balancer と Let’s Encrypt の統合の構成に関する概要を次に示します。
証明書の取得と更新をサポートするスクリプトを取得します。
スクリプトをコントローラ スクリプトとして NSX Advanced Load Balancer システムに追加します。
ユーザー アカウントをユーザーに追加します(制限付きアクセスのみ)。
NSX Advanced Load Balancer システムで証明書管理プロファイルを作成します。
NSX Advanced Load Balancer システムに仮想サービスを追加します。
FQDN がパブリック IP アドレスに解決され、ポート 80 がファイアウォールで開いていることを確認します。
CSR を作成し、構成済みの証明書管理プロファイルを選択します。
証明書のリストを確認します。Let's Encrypt CA が署名付き証明書をプッシュします。
証明書を構成済みの仮想サービスに関連付けます。
NSX Advanced Load Balancer システムの構成
Let's Encrypt を NSX Advanced Load Balancer 用に構成するには、次の手順を実行します。
letsencrypt_mgmt_profile で、使用可能なスクリプトをダウンロードします。ファイルをダウンロードするには、[Raw] オプションをクリックします。使用可能なコードをコピーします。
NSX Advanced Load Balancer で、 の順に移動し、[作成] をクリックします。
わかりやすい名前を追加し、手順 1 でコピーしたコードを [ControlScript のインポートまたは貼り付け] フィールドに貼り付けます。構成を [保存] します。
の順に移動してカスタム ロールを構成します。このロールの仮想サービス、アプリケーション プロファイル、SSL/TLS 証明書、および証明書管理プロファイルに対して読み取りおよび書き込みアクセスが有効になっていることを確認します。
5. ユーザーを追加し、必要なすべての詳細を入力し、構成されたカスタム ロールを選択します。
6. [作成] をクリックします。
の順に移動し、7. わかりやすい名前を入力し、構成済みの ControlScript を選択してカスタム パラメータを有効にし、次の例に示すようにカスタム パラメータを追加します。
管理者アカウントを使用しないことをお勧めします。カスタム ロールを持つユーザー アカウント(アクセス制限付き)を常に追加します。
8. [作成] をクリックして、[アプリケーション証明書] を選択します。
の順に移動し、9. わかりやすい名前とコモン ネームを入力し、構成済みの証明書管理プロファイルを選択し、関連するすべての詳細を追加して構成を保存します。
証明書のコモン ネーム (CN) としてアプリケーション ドメイン名を使用して仮想サービスが構成されていることを確認します。証明書の CN は、仮想サービスのアプリケーション ドメイン名と一致する必要があります。FQDN(証明書の CN または仮想サービスのアプリケーション ドメイン名が IP アドレスに解決され、ドメインにアクセスできる必要があります)。
数分後に、証明書のリストを確認します。Let’s Encrypt CA によってプッシュされた証明書が表示されます。証明書を構成済みの仮想サービスに関連付けます。
ログ
ログを表示するには、構成された仮想サービスに対し、重要でないログを有効にして、証明書を生成します。ログの例を次に示します。
証明書の更新の自動化
Controllerproperties には、ssl_certificate_expiry_warning_days の構成があります。デフォルトの構成では、ssl_certificate_expiry_warning_days の値は 30 日、7 日、1 日です。この設定は、必要に応じて変更できます。構成された設定に基づいて証明書の更新が必要な場合、スクリプトは有効になり、証明書の更新が自動的に処理されます。
Let’s Encrypt CA は、レート制限を適用します。そのため、証明書の更新がレート制限に達していないことを確認します。