HTTPS リスナーは SSL 証明書を使用して、暗号化アクセスと ID 認証を有効にします。このトピックでは、証明書の選択と形式の準備、証明書の作成、HTTPS リスナーとの関連付け、およびその後の有効期限切れ時の置換と更新を含む、Classic Load Balancer (CLB) で証明書を使用するための完全なワークフローについて説明します。
証明書の選択と準備
認証モード
CLB は、一方向認証と相互認証をサポートしています。
一方向認証:CLB ではサーバー証明書のみが必要です。クライアントはサーバーの ID を検証します。
相互認証:CLB ではサーバー証明書と CA 証明書の両方が必要です。サーバーとクライアントは相互に認証します。
ほとんどの一般公開ウェブサイトでは、一方向認証のみが必要です。内部の企業システムや API 呼び出し元の認証など、クライアントの ID を検証する必要がある場合にのみ、相互認証を設定してください。
証明書のソース
CLB は、2 つのソースからの証明書をサポートしています。
Alibaba Cloud Certificate Management Service:Alibaba Cloud Certificate Management Service で購入した証明書を直接選択します。この方法により、一元管理が容易になり、有効期限のリマインダーとワンクリックでの更新が可能になります。サーバー証明書のみをサポートし、クライアント CA 証明書はサポートしていません。
サードパーティー証明書:別のプロバイダーによって発行された証明書または自己署名証明書をアップロードします。この方法では、証明書の公開キーとプライベートキーのファイルを手動でアップロードする必要があります。サーバー証明書とクライアント CA 証明書の両方をサポートしています。
クライアント CA 証明書は、その内容をアップロードすることによってのみ追加でき、Alibaba Cloud Certificate Management Service から選択することはできません。独自の CA を構築してクライアント証明書を発行する必要がある場合は、「OpenSSL を使用した CA 証明書の生成」をご参照ください。
証明書の形式要件
CLB は PEM 形式の証明書のみをサポートしています。証明書を作成する前に、証明書、証明書チェーン、およびプライベートキーが次の形式要件を満たしていることを確認してください。他の形式の証明書は、まず PEM 形式に変換する必要があります。詳細については、「証明書形式の変換」をご参照ください。
サポートされる証明書タイプ:国際標準証明書 (RSA)。
サポートされる公開キーアルゴリズム:RSA 1024、RSA 2048、および RSA 4096。
BEGIN DH PARAMETERSフィールドを含む PEM ファイルはアップロードできません。HTTPS リスナーが使用する ECDHE 暗号スイートは、すでに前方秘匿性をサポートしているため、DHE 暗号スイートで必要とされるセキュリティ強化パラメーターファイルは不要です。
公開キー証明書の形式要件は、発行元によって異なります。証明書のソースに対応する要件を参照してください。
ルート CA によって発行された証明書
証明書がルート CA によって発行された場合、単一の証明書を取得し、追加の証明書は必要ありません。設定されたサイトは、ブラウザーなどのアクセスデバイスによって信頼されます。
証明書の形式は、次の要件を満たす必要があります。
-----BEGIN CERTIFICATE-----で始まり、-----END CERTIFICATE-----で終わります。各行には 64 文字が含まれ、最終行は 64 文字未満でもかまいません。
証明書の内容にスペースを含めることはできません。
中間 CA によって発行された証明書
証明書が中間 CA によって発行された場合、取得する証明書ファイルには複数の証明書が含まれます。アップロードする前に、サーバー証明書と中間証明書を結合する必要があります。
証明書チェーンの形式は、次の要件を満たす必要があります。
サーバー証明書が最初に来て、その後に中間証明書が続き、間に空白行はありません。
証明書の内容にスペースを含めることはできません。
証明書間に空白行を入れることはできず、各行には 64 文字を含める必要があります。詳細については、「RFC1421」をご参照ください。
証明書は必要な形式を満たしている必要があります。一般的に、中間 CA は証明書を発行する際に対応する指示を提供し、証明書はその CA の形式要件を満たす必要があります。
以下は、中間 CA によって発行された証明書チェーンの例です。
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----RSA プライベートキーの形式要件
サーバー証明書をアップロードする際には、その証明書のプライベートキーもアップロードする必要があります。
RSA プライベートキーの形式は、次の要件を満たす必要があります。
-----BEGIN RSA PRIVATE KEY-----で始まり、-----END RSA PRIVATE KEY-----で終わります。この内容をキーと一緒にアップロードしてください。文字列間に空白行を入れることはできません。各行には 64 文字が含まれ、最終行は 64 文字未満でもかまいません。詳細については、「RFC1421」をご参照ください。
プライベートキーが暗号化されている場合、たとえば、プライベートキーが -----BEGIN PRIVATE KEY-----、-----END PRIVATE KEY----- または -----BEGIN ENCRYPTED PRIVATE KEY-----、-----END ENCRYPTED PRIVATE KEY----- で始まる場合や、プライベートキーに Proc-Type: 4,ENCRYPTED が含まれている場合は、まず次のコマンドを実行して変換する必要があります。
openssl rsa -in old_server_key.pem -out new_server_key.pemOpenSSL の一部の新しいバージョンでは、openssl rsaはデフォルトで PKCS#8 を出力するため、変換が失敗します。変換するにはopenssl rsa -in old_server_key.pem -out new_server_key.pem -traditionalを使用してください。
証明書形式の変換
証明書が PEM 形式でない場合は、OpenSSL を使用してアップロードする前に PEM 形式に変換してください。
DER から PEM へ
DER 形式は通常、Java プラットフォームで使用されます。証明書ファイルの拡張子は通常、.der、.cer、または .crt です。
証明書を変換するには、次のコマンドを実行します。
openssl x509 -inform der -in certificate.cer -out certificate.pemプライベートキーを変換するには、次のコマンドを実行します。
openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem
P7B から PEM へ
P7B 形式は通常、Windows Server および Tomcat で使用されます。
証明書を変換するには、次のコマンドを実行します。
openssl pkcs7 -print_certs -in incertificate.p7b -out outcertificate.cerPFX から PEM へ
PFX 形式は通常、Windows Server で使用されます。
証明書を抽出するには、次のコマンドを実行します。
openssl pkcs12 -in certname.pfx -nokeys -out cert.pemプライベートキーを抽出するには、次のコマンドを実行します。
openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
複数ドメインシナリオにおける証明書のマッチングロジック
HTTPS リスナーには、デフォルト証明書を 1 つだけ設定できます。同じ HTTPS リスナーで複数のドメイン名に異なる証明書を使用するには、追加ドメイン機能を使用します。
クライアントがリクエストを送信すると、CLB は Server Name Indication (SNI) を使用してリクエストされたドメイン名を識別します。まず、ドメイン名に一致する追加ドメインに設定された証明書を使用します。一致する証明書が見つからない場合は、リスナーに設定されたデフォルト証明書を使用します。
リスナーが複数のワイルドカード証明書を使用する場合、最初に設定されたワイルドカード証明書のみが、配下のすべてのサブドメインに自動的に一致します。後から設定されたワイルドカード証明書は自動的には一致しません。特定のサブドメインごとに追加ドメインを追加し、対応するワイルドカード証明書を指定する必要があります。
たとえば、最初に *.example.com 証明書を設定し、次に *.test.com 証明書を設定した場合、2 つのマッチング動作は異なります。
クライアントがアクセスしたドメイン名 | 自動的に一致する証明書 | 必要な操作 |
| はい。 | 追加の設定は不要です。 |
| いいえ。デフォルトでは |
|
追加ドメインを使用する際は、次の点にご注意ください。
仕様ベースの CLB インスタンスのうち、SNI をサポートしているのはパフォーマンス保証型仕様のみです。つまり、追加ドメインをサポートしているのはこれらのインスタンスのみです。
追加する追加ドメインは、選択したサーバー証明書内のドメイン名と一致している必要があります。
追加ドメインは、転送ルールと一緒に使用された場合にのみ有効になり、転送ルールで設定されたドメイン名は追加ドメインと一致している必要があります。
デフォルトでは、HTTPS リスナーは最大 3 つの追加ドメインをサポートしており、最大 10 まで増やすことができます。
追加ドメインの設定方法と完全な説明については、「CLB 追加ドメイン名」をご参照ください。
使用制限
証明書の関連付けをサポートしているのは HTTPS リスナーのみです。HTTP リスナーはデータを平文で送信し、TCP や UDP リスナーなどのレイヤー 4 リスナーは証明書の関連付けをサポートしていません。これらのリスナーで暗号化通信を有効にするには、バックエンドサーバーに証明書をデプロイしてください。
証明書はリージョン間やアカウント間で使用することはできません。複数のリージョンで証明書を使用するには、証明書の作成時に必要なすべてのリージョンを選択してください。複数のアカウントで証明書を使用するには、まず証明書が作成されたアカウントでSSL 証明書をダウンロードし、次にターゲットアカウントでアップロードしてください。
証明書の作成
コンソール
準備を行います。
Alibaba Cloud が発行した証明書を使用する:Alibaba Cloud Certificate Management Service コンソールで必要なサーバー証明書を購入またはアップロード済みであることを確認します。
サードパーティー証明書を使用する:サーバー証明書の公開キーとプライベートキーのファイルを PEM 形式で準備します。相互認証の場合は、CA 証明書の公開キーファイルも PEM 形式で準備します。
CLB コンソールに移動します。左側メニューで、[CLB] > [証明書] を選択し、証明書の作成 をクリックします。
証明書の作成 パネルで、証明書のソースに基づいて設定を完了し、作成 をクリックします。
[Alibaba Cloud 証明書] を選択し、証明書リスト から必要な SSL 証明書を選択し、リージョン を選択します。
サードパーティの証明書 を選択し、次の設定を完了します。
[証明書のタイプ]:アップロードする証明書のタイプを選択します。選択したタイプに基づいて、ページに対応する設定項目が表示されます。
[サーバー証明書] を選択した場合は、[公開キー証明書] と [プライベートキー] をアップロードし、リージョン を選択します。
[CA 証明書] を選択した場合は、[クライアント CA 公開キー証明書] (相互認証でクライアント ID を検証するために使用) をアップロードし、リージョン を選択します。
アップロードされた証明書の内容は NGINX 形式と互換性があります。サンプル証明書を見る をクリックして、正しい形式を参照できます。
API
UploadServerCertificate API を呼び出してサーバー証明書をアップロードします。Alibaba Cloud が発行した証明書を使用する場合は、
AliCloudCertificateIdを渡して証明書を指定します。サードパーティー証明書をアップロードする場合は、証明書の内容とプライベートキーをServerCertificateとPrivateKeyを介して渡します。UploadCACertificate API を呼び出してクライアント CA 証明書をアップロードし、証明書の内容を
CACertificateを介して渡します。
証明書と HTTPS リスナーの関連付け
証明書は作成後、HTTPS リスナーに関連付けられて初めて有効になります。証明書は HTTPS リスナーを追加する際に選択します。以下のセクションでは、証明書に関連する設定項目のみをリストアップしています。完全なリスナー設定プロセスについては、「HTTPS リスナーの追加」をご参照ください。
HTTPS リスナーは CLB で復号化を完了し、HTTPS ではなく HTTP 経由でバックエンドサーバーにリクエストを転送します。したがって、バックエンドサーバーは HTTP 経由でサービスを提供する必要があり、ヘルスチェックやバックエンドポートなどの設定が HTTP プロトコルと一致していることを確認する必要があります (たとえば、バックエンドポートは通常 80 です)。
コンソール
SSL 証明書 設定ウィザードで、作成したサーバー証明書を選択します。
任意:高度な設定 の右側にある 編集 をクリックし、必要に応じて相互認証と TLS セキュリティポリシーを設定します。
[相互認証を有効化] をオンにし、アップロードした CA 証明書を選択します。自己構築の CA を使用してクライアント証明書を発行する場合は、「OpenSSL を使用した CA 証明書の生成」をご参照ください。
[TLS セキュリティポリシー] を選択します。仕様ベースの CLB インスタンスのうち、パフォーマンス保証型仕様のみが TLS セキュリティポリシーの選択をサポートしています。各ポリシーでサポートされている TLS プロトコルバージョンと暗号スイートについては、「TLS セキュリティポリシー」をご参照ください。
ウィザードに従って、バックエンドサーバーやヘルスチェックなどの設定を完了し、送信します。リスナーが作成されると、証明書が有効になります。
API
CreateLoadBalancerHTTPSListener API を呼び出して、HTTPS リスナーの作成時に証明書を関連付けます。
ServerCertificateIdを介してサーバー証明書を指定します。相互認証の場合は、CACertificateIdを介して CA 証明書を指定します。SetLoadBalancerHTTPSListenerAttribute API を呼び出して、既存の HTTPS リスナーに関連付けられている証明書を変更します。
証明書の置換
証明書の有効期限が近づいている場合、発行元を変更する必要がある場合、または証明書が誤って設定されている場合は、証明書を置換する必要があります。CLB は 2 つの置換方法を提供しています。影響範囲に基づいていずれかを選択してください。どちらの方法を使用する場合でも、置換完了後に証明書が有効になったことの確認を行うことを推奨します。
比較項目 | 方法 1:リスナー証明書の置換 | 方法 2:証明書管理による証明書の置換 |
影響範囲 | 現在の HTTPS リスナーのデフォルト証明書のみ。 | 証明書に関連付けられているすべてのリスナーと追加ドメイン。 |
シナリオ | 1 つのリスナーの証明書のみを置換する必要がある場合、または相互認証や TLS セキュリティポリシーも調整する必要がある場合。 | 同じ証明書が複数のリスナーや追加ドメインで使用されており、それらすべてを一度に置換する必要がある場合。 |
前提条件 | なし。 | 証明書が少なくとも 1 つのリスナーまたは追加ドメインに関連付けられていること。 |
証明書を置換すると、CLB はリスナーの証明書設定を更新します。このプロセス中に、HTTPS 接続が短時間中断する可能性があります (約数秒間、SSL 接続エラーとして表示されます) が、その後、接続は自動的に回復します。この操作はオフピーク時間に実行することを推奨します。置換後に例外が発生した場合は、リスナー証明書を元の証明書に戻すことでロールバックできます。
方法 1:リスナー証明書の置換
コンソール
CLB コンソールに移動し、ターゲットインスタンス ID をクリックします。[リスナー] タブで、ターゲットの HTTPS リスナーを見つけます。操作 列で、証明書の管理 をクリックします。
証明書の管理 パネルで、サーバー証明書の選択 [(デフォルト証明書)] ドロップダウンリストから新しいサーバー証明書を選択します。相互認証または TLS セキュリティポリシーも調整する場合は、高度な設定 でそれらを変更し、OK をクリックします。
この方法はリスナーのデフォルト証明書のみを置換し、追加ドメインの証明書は置換しません。リスナーに追加ドメインが設定されている場合は、追加ドメインの証明書を別途更新するか、以下の方法を使用して証明書に関連付けられているすべてのオブジェクトを一度に置換してください。
API
UploadServerCertificate API を呼び出して新しい証明書をアップロードし、新しい証明書 ID を取得します。
SetLoadBalancerHTTPSListenerAttribute API を呼び出し、新しい
ServerCertificateIdを渡して HTTPS リスナーの証明書を更新します。リスナーに追加ドメインが設定されている場合は、追加ドメインごとに SetDomainExtensionAttribute API を呼び出して、その証明書を個別に更新します。
リスナー証明書のみを更新しても、追加ドメインの証明書は同時に更新されません。追加ドメインを見逃した場合、対応するドメイン名にアクセスすると、古い証明書が引き続き使用されます。
方法 2:証明書管理による証明書の置換
証明書管理を通じて証明書を置換すると、その証明書に関連付けられているすべてのリスナーと追加ドメインの証明書も自動的に置換されます。
置換できるのは、少なくとも 1 つのリスナーまたは追加ドメインに関連付けられている証明書のみです。
CLB コンソールに移動します。左側メニューで、[CLB] > [証明書] を選択します。
証明書 ページで、置換するターゲット証明書を見つけます。操作 列で、証明書の変更 をクリックします。サーバー証明書の置き換え ページで、設定を完了し、証明書の変更 をクリックします。
[証明書の作成と置き換え] を選択します。
[Alibaba Cloud 証明書] を選択し、証明書リスト から新しい証明書を選択します。
[サードパーティの証明書] を選択し、新しい証明書の公開キーとプライベートキーの内容を貼り付けます。
[既存証明書に置き換え] を選択し、既存の証明書のリストから置換に使用するサーバー証明書を選択します。
証明書リストで表示 をクリックします。証明書 ページで、関連付けられているリスナーと追加ドメインが新しい証明書で更新されたことを確認できます。
証明書が有効になったことの確認
ブラウザー経由でサイトにアクセスし、証明書の詳細で有効期間を確認します。キャッシュが判断に与える影響を避けるために、シークレットモードを使用することを推奨します。
追加ドメインが設定されている場合は、各ドメイン名を個別に検証し、各ドメイン名が期待される証明書を返すことを確認します。
証明書の有効期限切れと更新
証明書の有効期限が切れると、サイトにアクセスするクライアントには、証明書が期限切れであるか安全でないというプロンプトが表示されます。したがって、証明書の有効期限が切れる前に置換を完了する必要があります。
Alibaba Cloud Certificate Management Service が発行した証明書を使用すると、有効期限のリマインダーとワンクリック更新のメリットを享受できます。このサービスでの有効期限通知を追跡することを推奨します。
証明書の有効期限が切れる前に、まず新しい証明書を取得し (Alibaba Cloud Certificate Management Service で証明書を更新または再発行するか、サードパーティーの発行元から新しい証明書を申請します)、その後、前述のセクションに基づいて CLB で証明書を置換および検証します。
Alibaba Cloud Certificate Management Service で証明書を更新または再発行した後、CLB リスナーが使用する証明書は自動的に更新されません。CLB で証明書の置換操作を別途実行する必要があります。
詳細情報
クォータ
クォータ名 | 説明 | デフォルト値 | 調整可能 |
slb_quota_certs_num | 各リージョンでアップロードできるサーバー証明書の数。 | 100 | |
slb_quota_ca_certs_num | 各リージョンでアップロードできるクライアント CA 証明書の数。 | 100 |