イングレスゲートウェイを使用して、HTTPSと動的な証明書の読み込みを有効にすることができます。これにより、ゲートウェイのセキュリティが確保されます。イングレスゲートウェイのクラシックロードバランサー(CLB)インスタンスに証明書をバインドすることで、HTTPSリスナーを作成できます。 CLBインスタンスは、HTTPSリクエストをHTTPリクエストに復号化し、HTTPリクエストをイングレスゲートウェイポッドに転送します。このトピックでは、イングレスゲートウェイのCLBインスタンスに証明書をバインドしてHTTPSリスナーを作成する方法について説明します。
前提条件
ステップ 1:CLBインスタンスにバインドする証明書を準備する
証明書と秘密鍵が作成されている場合
aliyun.com で使用可能な証明書と秘密鍵が既にある場合は、秘密鍵に aliyun.com.key、証明書に aliyun.com.crt という名前を付ける必要があります。
証明書と秘密鍵が作成されていない場合
証明書と秘密鍵を作成していない場合は、openssl を使用して、aliyun.com の証明書と秘密鍵を以下の手順で生成できます。
次のコマンドを実行して、ルート証明書と秘密鍵を作成します。
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crtSSL証明書を作成します。
サーバーロードバランサー CLBコンソール で、左側のナビゲーションペインから を選択します。
[証明書管理] ページで、[証明書の作成] をクリックします。
[証明書の作成] パネルで、[alibaba Cloud発行の証明書] を選択し、証明書リストの下部にある [SSL証明書の作成] をクリックします。
[デジタル証明書管理サービス] ページで、左側のナビゲーションペインから [証明書管理] > [SSL証明書管理] を選択します。
[証明書のアップロード] タブで [証明書のアップロード] をクリックし、[証明書名] に aliyun.com と入力し、生成されたルート証明書と秘密鍵を [証明書ファイル] フィールドと [証明書の秘密鍵] フィールドにアップロードします。[OK] をクリックし、証明書チェーンのプロンプトは無視します。
サーバーロードバランサー CLBコンソール で証明書を作成します。詳細については、「Alibaba Cloud発行の証明書を選択する」をご参照ください。
ステップ 2:HTTPSリスナーを作成する
ASMでは、カスタムイングレスゲートウェイを作成できます。 YAMLファイルでパラメーターを設定できます。詳細については、「KubeAPIを使用してイングレスゲートウェイを管理する」をご参照ください。
ingressgateway.yamlファイルに次の内容を追加します。
spec: .... ports: - name: http-0 port: 80 protocol: HTTP targetPort: 80 - name: https-1 port: 443 protocol: HTTPS targetPort: 80 .... serviceAnnotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: 'https:443' .... serviceType: LoadBalancerserviceAnnotationsを使用してCLBインスタンスを作成します。 CLBインスタンスは、ポート 443 で受信したHTTPSリクエストをHTTPリクエストに復号化し、HTTPリクエストをイングレスゲートウェイポッドのポート 80 に転送します。 YAMLファイルの${YOUR_CERT_ID}は、ステップ 1 から取得します。次のコマンドを実行して、イングレスゲートウェイをデプロイします。
kubectl apply -f ingressgateway.yaml
ステップ 3:HTTPSリスナーが有効になっているかどうかを確認する
ASMコンソール にログインします。左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、ASMインスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。
[イングレスゲートウェイ] ページで、ターゲットゲートウェイの [エンドポイント] を確認します。
[エンドポイント] は、ターゲットゲートウェイのIPアドレスです。
次のコマンドを実行して、HTTPS経由で productpage サービスにアクセスします。
前の手順で取得した
${イングレスゲートウェイの IP アドレス}を使用します。curl -k -H Host:a.aliyun.com --resolve a.aliyun.com:443:${イングレスゲートウェイの IP アドレス} https://a.aliyun.com/productpage -I出力例:
HTTP/2 200 date: Fri, 13 Jan 2023 07:11:45 GMT content-type: text/html; charset=utf-8 content-length: 5294 vary: Accept-Encoding x-envoy-upstream-service-time: 23暗号化されたトラフィックは、CLBインスタンスを通過するときにプレーンテキストに復号化され、クラスターに入ります。この結果は、HTTPSリスナーが有効になっていることを示しています。