すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:HTTPS 相互認証によるサービスセキュリティの向上

最終更新日:Mar 26, 2026

HTTPS 相互認証 (相互 TLS、mTLS) では、セキュアチャネルを確立する前に、サーバーとクライアントの両方が互いの ID を検証する必要があります。クライアントのみがサーバーを検証する片方向 HTTPS とは異なり、mTLS では、クライアントも信頼できる認証局 (CA) によって署名された有効な SSL/TLS 証明書を提示する必要があります。これにより、mTLS は金融、IoT、企業内サービス、公共サービスなど、既知の信頼できるクライアントにアクセスを制限し、中間者攻撃を防ぐ必要があるシナリオに適しています。

仕組み

HTTPS 片方向認証HTTPS 相互認証
クライアントによるサーバーの検証はいはい
サーバーによるクライアントの検証いいえはい
クライアントが保持するものルート CA によって署名された SSL/TLS 証明書
サーバーが保持するものサーバー証明書ルート CA 証明書

相互認証では、サーバーはルート CA 証明書を保持します。クライアントは、そのルート CA によって署名された SSL/TLS 証明書を保持します。接続が確立される前に、双方が互いを検証します。

前提条件

開始する前に、次のものが揃っていることを確認してください:

(オプション) 手順 1: 自己署名 CA 証明書の生成

すでにルート CA 証明書をお持ちの場合は、この手順をスキップしてください。

  1. 秘密鍵を生成します:

    openssl genrsa -out ca.key 4096
  2. 証明書署名要求 (CSR) を作成します:

    フィールド必須説明
    Country Nameはい2 文字の国別コード、たとえばcn
    State or Province Nameはい省または自治区の名称
    Locality Nameはい市区町村名
    Organization Nameはい会社名または組織名
    Organizational Unit Nameはい部署名
    Common Nameいいえ一般的に使用される名前
    Email Addressいいえ証明書管理者のメールアドレス
    A challenge passwordいいえオプションの CSR セキュリティパスワード。不要な場合は空白のままにします
    openssl req -new -out ca.csr -key ca.key

    OpenSSL によって、次のフィールドへの入力を求められます:

    Country Name (2 letter code) [XX]:cn
    State or Province Name (full name) []:bj
    Locality Name (eg, city) [Default City]:bj
    Organization Name (eg, company) [Default Company Ltd]:alibaba
    Organizational Unit Name (eg, section) []:test
    Common Name (eg, your name or your servers hostname) []:root
    Email Address []:example@ali
    A challenge password []:
  3. 有効期間 3,650 日のルート CA 証明書を作成します:

    ファイル説明
    ca.crtルート CA 証明書
    ca.csrCSR ファイル
    ca.key秘密鍵
    openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -CAcreateserial -days 3650

    ls を実行して、出力ファイルを確認します:

    ca.crt  ca.csr  ca.key

手順 2: CA 証明書のアップロード

ルート CA 証明書を Certificate Management Service にアップロードし、AlbConfig で使用する証明書 ID を取得します。

  1. Certificate Management Service コンソールにログインします。 上部のナビゲーションバーで、リージョンドロップダウンリストから [中国本土以外] を選択します。 左側のナビゲーションウィンドウで、[証明書申請リポジトリ] をクリックします。

  2. [証明書申請リポジトリ]」ページで、「[リポジトリの作成]」をクリックします。「[リポジトリの作成]」パネルで、以下のパラメーターを設定し、「[OK]」をクリックします。

    パラメーター説明
    リポジトリ名リポジトリのカスタム名
    データソース[CA 証明書のアップロード] を選択して、サードパーティの CA によって署名された証明書をアップロードします
  3. 作成したリポジトリをクリックします。リポジトリページで、[アップロード済み証明書] をクリックします。

  4. CA 情報」パネルで、以下のフィールドに情報を入力し、[確認して有効化] をクリックします。

    パラメーター説明
    パッケージ名証明書のカスタム名
    CA 証明書証明書の内容を貼り付けるか、または[ファイルをアップロードして解析] をクリックして証明書ファイルをアップロードしてください。
  5. アップロードされた証明書の行の右側にある [詳細] をクリックし、証明書識別子を記録します。手順 4 で必要になります。

手順 3: クライアント証明書の生成

ルート CA 証明書を使用してクライアント証明書に署名します。

  1. クライアントの秘密鍵を生成します:

    openssl genrsa -out client.key 4096
  2. クライアント証明書の CSR を作成します:

    openssl req -new -out client.csr -key client.key

    手順 1 と同じフィールドに入力します。値は CA 証明書の値と異なっていてもかまいません。

  3. ルート CA を使用してクライアント証明書に署名します:

    ファイル説明
    client.crtルート CA によって署名されたクライアント証明書
    client.csrCSR ファイル
    client.keyクライアントの秘密鍵
    openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650

    ca.crtca.key は、ステップ 1 で生成されたルート CA 証明書と秘密鍵です。ls を実行して出力ファイルを確認します:

    client.crt  client.csr  client.key

手順 4: 相互認証の有効化とテスト

相互認証の有効化

  1. AlbConfig を開いて編集します:

    kubectl edit albconfig <ALBCONFIG_NAME>

    <ALBCONFIG_NAME> を AlbConfig の名前に置き換えます。

  2. HTTPS リスナーの構成(ポート 443)で、caEnabled: true を追加し、caCertificates.CertificateId を手順 2 で記録した証明書識別子に設定します。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: #...
    spec:
      config:
        #...
      listeners:
      - port: 443
        protocol: HTTPS
        caEnabled: true                                        # 相互認証を有効化
        caCertificates:
        - CertificateId: 0e40dda998174723af39d37fcaf*****     # 手順 2 で取得した証明書 ID
        certificates:
          #...

相互認証のテスト

  1. Ingress のホスト名とアドレスを取得します:

    kubectl get ingress

    期待される出力:

    NAME            CLASS                HOSTS                  ADDRESS                         PORTS     AGE
    https-ingress   https-ingressclass   demo.alb.ingress.top   alb-********.alb.aliyuncs.com   80, 443   83m

    HOSTS 列および ADDRESS 列の値を記録します。

  2. 有効なクライアント証明書を使用したリクエストが成功することを確認します。前のステップの値に、demo.alb.ingress.top および alb-********.alb.aliyuncs.com を置き換えます:

    curl -H HOST:demo.alb.ingress.top -k https://alb-********.alb.aliyuncs.com --cert client.crt --key client.key

    期待される出力:

    old

(オプション) 手順 5: 相互認証の無効化

  1. AlbConfig を開いて編集します:

    kubectl edit albconfig <ALBCONFIG_NAME>
  2. caEnabledfalse に設定します:

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: #...
    spec:
      config:
        #...
      listeners:
      - port: 443
        protocol: HTTPS
        caEnabled: false                                       # 相互認証を無効化
        caCertificates:
        - CertificateId: 0e40dda998174723af39d37fcaf*****
        certificates:
          #...

次のステップ