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

Alibaba Cloud Service Mesh:ドメイン名への証明書の紐付け

最終更新日:Jan 13, 2025

Service Mesh(ASM)では、証明書をドメイン名に視覚的に紐付けることができます。証明書をドメイン名に紐付けると、イングレスゲートウェイを使用して HTTPS などのプロトコルでドメイン名にアクセスできます。これにより、イングレスゲートウェイのセキュリティが向上します。このトピックでは、証明書をドメイン名に紐付ける方法について説明します。

前提条件

背景情報

この例では、ドメイン名が aliyun.com である myexampleapp サービスを使用します。 aliyun.com ドメイン名に証明書を紐付けると、イングレスゲートウェイを使用して HTTPS 経由で myexampleapp サービスにアクセスできます。

手順

  1. myexampleapp という名前のサンプルサービスを作成します。

    1. 以下の内容を含む myexample-nginx.conf ファイルを作成します。

      この例では、ドメイン名が aliyun.com である myexampleapp サービスは NGINX に基づいて実装されています。NGINX サーバーの設定ファイルを作成する必要があります。次のコードブロックは、サービスのルートパスへのリクエストに対して、メッセージ Welcome to aliyun.com! とステータスコード 200 が返されることを指定しています。

      events {
      }
      http {
        log_format main '$remote_addr - $remote_user [$time_local]  $status ' // メインログフォーマット
        '"$request" $body_bytes_sent "$http_referer" '  // リクエスト、送信バイト数、リファラー
        '"$http_user_agent" "$http_x_forwarded_for"'; // ユーザーエージェント、転送元IP
        access_log /var/log/nginx/access.log main; // アクセスログの設定
        error_log  /var/log/nginx/error.log; // エラーログの設定
        server {
          listen 80; // 80番ポートでリッスン
          location / { // ルートパスへのリクエスト
              return 200 'Welcome to aliyun.com!'; // 200 OK とメッセージを返す
              add_header Content-Type text/plain; // Content-Typeヘッダーを追加
          }
        }
      }
    2. 次のコマンドを実行して、NGINX サーバーの ConfigMap を作成します。

      kubectl create configmap myexample-nginx-configmap --from-file=nginx.conf=./myexample-nginx.conf
    3. 以下の内容を含む myexampleapp.yaml ファイルを作成します。

      myexampleapp.yaml の内容を表示

      apiVersion: v1
      kind: Service
      metadata:
        name: myexampleapp
        labels:
          app: myexampleapp
      spec:
        ports:
        - port: 80
          protocol: TCP
        selector:
          app: myexampleapp
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: myexampleapp
      spec:
        selector:
          matchLabels:
            app: myexampleapp
        replicas: 1
        template:
          metadata:
            labels:
              app: myexampleapp
          spec:
            containers:
            - name: nginx
              image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
              ports:
              - containerPort: 80
              volumeMounts:
              - name: nginx-config
                mountPath: /etc/nginx
                readOnly: true
            volumes:
            - name: nginx-config
              configMap:
                name: myexample-nginx-configmap
    4. 次のコマンドを実行して、ドメイン名が aliyun.com である myexampleapp サービスを作成します。

      kubectl apply -f myexampleapp.yaml
  2. myexampleapp サービスをイングレスゲートウェイにインポートします。

    1. ASM コンソール にログインします。左側のナビゲーションペインで、[service Mesh] > [メッシュ管理] を選択します。

    2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[ASM ゲートウェイ] > [イングレスゲートウェイ] を選択します。

    3. [イングレスゲートウェイ] ページで、目的のイングレスゲートウェイの名前をクリックします。

    4. [ゲートウェイの概要] ページの左側のナビゲーションペインで、[アップストリームサービス] をクリックします。

    5. [ゲートウェイのアップストリームサービス] ページで、[サービスのインポート] をクリックします。

    6. [サービスのインポート] ページで、[名前空間] ドロップダウンリストから myexampleapp サービスの名前空間を選択します。サービス選択ボックスで、[myexampleapp] サービスを選択し、上游服务 アイコンをクリックしてサービスを選択済みボックスに移動します。次に、[送信] をクリックします。

  3. aliyun.com サーバーの証明書と秘密鍵を作成します。

    1. 次の openssl コマンドを実行して、ルート証明書と秘密鍵を作成します。

      openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt // ルート証明書と秘密鍵を作成
    2. 次のコマンドを実行して、aliyun.com サーバーの証明書と秘密鍵を作成します。

      • 次のコマンドを実行して、aliyun.com.crt 証明書を作成します。

        openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt // サーバー証明書を作成
      • 次のコマンドを実行して、aliyun.com.key 秘密鍵を作成します。

        openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization" // サーバー秘密鍵を作成
  4. 証明書と秘密鍵をボリュームにマウントし、ボリュームをイングレスゲートウェイに追加します。

    説明
    • バージョン 1.17 以降の ASM インスタンスでは、[証明書管理] ページに追加された証明書を使用できます。できるだけ早く証明書を [証明書管理] に移行することをお勧めします。証明書を移行するには、[証明書管理] ページで既存の証明書と同じ名前の新しい証明書を作成します。その後、既存の証明書は上書きされるため、削除する必要はありません。ASM インスタンスの更新方法の詳細については、「ASM インスタンスの更新」をご参照ください。

    • [証明書管理] ページに追加された証明書の場合、システムはデータプレーンに証明書と同じ名前のシークレットを自動的に生成します。同じ名前のシークレットが既に存在する場合、シークレットの新しい内容が元の内容を上書きします。

    バージョン 1.17 より前の ASM インスタンス

    1. ASM コンソール にログインします。左側のナビゲーションペインで、[service Mesh] > [メッシュ管理] を選択します。

    2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[ASM ゲートウェイ] > [イングレスゲートウェイ] を選択します。

    3. [イングレスゲートウェイ] ページで、設定するゲートウェイの名前をクリックします。[ゲートウェイの概要] ページの左側のナビゲーションペインで、[ドメイン/証明書] をクリックします。

    4. 表示されるページで、[証明書] タブをクリックし、[作成] をクリックします。

    5. [新しい証明書] ページで、[名前] フィールドに証明書名を入力し、aliyun.com.crt 証明書の内容を [証明書] ボックスにコピーし、aliyun.com.key 秘密鍵の内容を [鍵] ボックスにコピーして、[作成] をクリックします。

    バージョン 1.17 以降の ASM インスタンス

    1. ASM コンソール にログインします。左側のナビゲーションペインで、[service Mesh] > [メッシュ管理] を選択します。

    2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[ASM ゲートウェイ] > [証明書管理] を選択します。

    3. [証明書管理] ページで、[作成] をクリックします。[証明書情報] パネルで、必要なパラメーターを設定し、[OK] をクリックします。

      パラメーター

      説明

      [名前]

      証明書の名前を入力します。この例では、myexample-credential と入力します。

      [公開鍵証明書]

      手順 3 で生成された aliyun.com.crt 証明書の内容を入力します。

      [秘密鍵]

      手順 3 で生成された aliyun.com.key 秘密鍵の内容を入力します。

  5. 証明書をドメイン名に紐付けます。

    1. ASM コンソール にログインします。左側のナビゲーションペインで、[service Mesh] > [メッシュ管理] を選択します。

    2. [メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、[ASM ゲートウェイ] > [イングレスゲートウェイ] を選択します。

    3. [イングレスゲートウェイ] ページで、構成するゲートウェイの名前をクリックします。[ゲートウェイの概要] ページの左側のナビゲーションペインで、[ドメイン/証明書] をクリックします。

    4. 表示されるページで、[ドメイン] タブをクリックし、[作成] をクリックします。

    5. [ドメインの追加] ページで、[ドメイン名] パラメーターを *.aliyun.com に設定し、[プロトコル] パラメーターを [HTTPS] に設定し、ビジネス要件に基づいてポート名とポート番号を入力します。さらに、イングレスゲートウェイにインポートした証明書を選択し、[標準 TLS セマンティクスで安全な接続を確立する] を選択して、[作成] をクリックします。

      説明

      [標準 TLS セマンティクスで安全な接続を確立する] を選択した場合、TLS リクエストのみがドメイン名にアクセスできます。

  6. 次のコマンドを実行して、HTTPS 経由で aliyun.com ドメイン名にアクセスし、ドメイン名と証明書が紐付けられているかどうかを確認します。

    curl -k -H Host:www.aliyun.com --resolve www.aliyun.com:443:{IP address of the ingress gateway} https://www.aliyun.com // イングレスゲートウェイのIPアドレスを指定してHTTPSでアクセス

    予期される出力:

    Welcome to aliyun.com!

    aliyun.com ドメイン名に HTTPS 経由でアクセスできます。これは、証明書がドメイン名に紐付けられていることを示します。