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

Container Service for Kubernetes:NGINX Ingress コントローラーのセキュリティ暗号化

最終更新日:Mar 26, 2026

NGINX Ingress コントローラーのセキュリティ暗号化は、データ伝送において高いセキュリティ要件が求められるビジネスシナリオに適用されます。本トピックでは、NGINX Ingress コントローラーのセキュリティ設定の構成方法および検証方法について説明します。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

セキュリティ暗号化の設定

ssl-protocols および ssl-ciphers フィールドを、nginx-configuration ConfigMap(名前空間:kube-system)で設定することにより、トランスポート層セキュリティ(TLS)プロトコルのバージョンおよび暗号スイートを構成します。

フィールド説明デフォルト値
ssl-protocolsIngress が受け付ける TLS プロトコルのバージョンです。デフォルトでは TLS 1.2 および TLS 1.3 のみが有効になっています。詳細については、「ssl-protocols」をご参照ください。TLSv1.2 TLSv1.3
ssl-ciphersIngress が受け付ける暗号スイートで、OpenSSL 形式で指定します。並び順はアルゴリズムの優先度を決定し、デフォルトのリストでは完全前方秘匿性(PFS)をサポートするアルゴリズムが優先されます。詳細については、「ssl-ciphers」をご参照ください。ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
暗号スイートの並び順は、選択されるアルゴリズムを決定するため重要です。デフォルトのリストでは、完全前方秘匿性(PFS)対応の暗号スイートが優先されます。特定のセキュリティ要件がない限り、デフォルト設定をそのまま使用してください。

設定を適用した後は、testssl.sh または SSL Labs を使用して検証してください。

ConfigMap の更新

コンソール

  1. Container Service Management Console にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウから、[構成] > [ConfigMaps] を選択します。

  3. [ConfigMap] ページで、[名前空間] のドロップダウンリストから [kube-system] を選択します。[名前] の検索ボックスに nginx-configuration を入力し、検索アイコンをクリックします。nginx-configuration を見つけたら、[編集] をクリックします([操作] 列)。

  4. [編集] ページで、[+追加] をクリックします。[名前] および [値] を設定し、[OK] をクリックします。

kubectl

以下のコマンドを実行して、エディターで ConfigMap を開きます。

kubectl edit cm -n kube-system nginx-configuration

ssl-protocols および ssl-ciphers フィールドを追加または更新します。

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configuration
  namespace: kube-system
data:
  ssl-protocols: "TLSv1.2 TLSv1.3"  # TLS 1.2 および TLS 1.3 のみを許可します。
  ssl-ciphers: "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"  # デフォルトの暗号スイートリスト。

TLS バージョンおよび暗号スイートのセキュリティ検証

以下のいずれかの方法を使用して、設定が有効かつセキュアであることを確認します。

  • 方法 1: testssl.sh をダウンロードして実行します。

    ./testssl.sh <サイトのドメイン名>

    このツールが脆弱な暗号スイートや非推奨の TLS プロトコルバージョンを検出すると、赤色でハイライト表示されます。正しく設定された Ingress の期待される出力例は以下のとおりです。

     ソケット経由でのプロトコルのテスト(NPN+ALPN を除く)
     SSLv2      提供されていません(OK)
     SSLv3      提供されていません(OK)
     TLS 1      提供されていません
     TLS 1.1    提供されていません
     TLS 1.2    提供されています(OK)
     TLS 1.3    提供されています(OK):最終
     NPN/SPDY   提供されていません
     ALPN/HTTP2 h2, http/1.1(提供されています)
     暗号カテゴリのテスト
     NULL 暗号(暗号化なし)                  提供されていません(OK)
     匿名 NULL 暗号(認証なし)              提供されていません(OK)
     Export 暗号(ADH+NULL を除く)          提供されていません(OK)
     LOW:64 ビット + DES、RC[2,4](Export を除く) 提供されていません(OK)
     Triple DES 暗号 / IDEA                 提供されていません
     非推奨の CBC 暗号(AES、ARIA など)     提供されていません
     強力な暗号化(AEAD 暗号)               提供されています(OK)
     安定した(完全な)前方秘匿性(PFS)のテスト — Null 認証/暗号化、3DES、RC4 を除外
     PFS が提供されています(OK)          TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-CHACHA20-POLY1305
                                  TLS_AES_128_GCM_SHA256 ECDHE-RSA-AES128-GCM-SHA256
     提供されている楕円曲線:     prime256v1 secp384r1 secp521r1 X25519 X448
     有限体グループ:          ffdhe2048 ffdhe3072 ffdhe4096 ffdhe6144 ffdhe8192
     サーバープリファレンスのテスト
     サーバー暗号順序あり?     あり(OK) — TLS 1.3 およびそれ以下
     合意されたプロトコル          TLSv1.3
     合意された暗号            TLS_AES_256_GCM_SHA384、253 ビット ECDH(X25519)
     暗号順序
        TLSv1.2:   ECDHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-CHACHA20-POLY1305
        TLSv1.3:   TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_GCM_SHA256
    ...
  • 方法 2: SSL Labs SSL Server Test オンラインツールに、ご利用のサイトのドメイン名を入力します。

設定済み暗号スイートの確認

NGINX 構成で現在アクティブな暗号スイートを確認するには、以下のコマンドを実行します。

kubectl -n kube-system exec deploy/nginx-ingress-controller -- nginx -T | grep ssl_ciphers

期待される出力:

Defaulted container "nginx-ingress-controller" out of: nginx-ingress-controller, init-sysctl (init)
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
        ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
nginx: configuration file /etc/nginx/nginx.conf test is successful

よくある質問

NGINX Ingress コントローラーは中国暗号アルゴリズムをサポートしていますか?

いいえ。ACK の NGINX Ingress コントローラーは、Kubernetes コミュニティの ingress-nginx プロジェクト を基盤としており、現時点では 中国暗号アルゴリズム をサポートしていません。

NGINX Ingress はどのような暗号スイートをサポートしていますか?

NGINX は暗号化および復号に OpenSSL を使用します。ご利用のコントローラーで利用可能な暗号スイートを確認するには、NGINX Ingress コントローラー Pod にアクセスします。

kubectl exec -it -n kube-system <nginx-ingress-pod-name> bash

コンテナ内で、nginx -V を実行して、NGINX および OpenSSL のバージョンを確認します。

nginx-ingress-controller-5c455d7d9f-nr7dd:/etc/nginx$ nginx -V

期待される出力:

nginx version: nginx/1.21.6
built by gcc 12.2.1 20220924 (Alpine 12.2.1_git20220924-r10)
built with OpenSSL 3.1.3 19 Sep 2023 (running with OpenSSL 3.1.5 30 Jan 2024)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --modules-path=/etc/nginx/modules --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_geoip_module --with-http_gzip_static_module --with-http_sub_module --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-threads --with-http_secure_link_module --with-http_gunzip_module --with-file-aio --without-mail_pop3_module --without-mail_smtp_module --without-mail_imap_module --without-http_uwsgi_module --without-http_scgi_module --with-cc-opt='-g -O3 -flto -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wno-deprecated-declarations -fno-strict-aliasing -D_FORTIFY_SOURCE=2 --param=ssp-buffer-size=4 -DTCP_FASTOPEN=23 -fPIC -I/root/.hunter/_Base/d45d77d/aab92d8/3b7ee27/Install/include -Wno-cast-function-type -m64 -mtune=generic' --with-ld-opt='-flto -fPIE -fPIC -pie -Wl,-z,relro -Wl,-z,now -L/root/.hunter/_Base/d45d77d/aab92d8/3b7ee27/Install/lib' --user=www-data --group=www-data --add-module=/tmp/build/ngx_devel_kit-0.3.2 --add-module=/tmp/build/set-misc-nginx-module-0.33 --add-module=/tmp/build/headers-more-nginx-module-0.34 --add-module=/tmp/build/ngx_http_substitutions_filter_module-b8a71eacc7f986ba091282ab8b1bbbc6ae1807e0 --add-module=/tmp/build/lua-nginx-module-0.10.25 --add-module=/tmp/build/stream-lua-nginx-module-0.0.13 --add-module=/tmp/build/lua-upstream-nginx-module-8aa93ead98ba2060d4efd594ae33a35d153589bf --add-dynamic-module=/tmp/build/nginx-http-auth-digest-1.0.0 --add-dynamic-module=/tmp/build/nginx-opentracing-0.19.0/opentracing --add-dynamic-module=/tmp/build/ModSecurity-nginx-1.0.3 --add-dynamic-module=/tmp/build/ngx_http_geoip2_module-a26c6beed77e81553686852dceb6c7fdacc5970d --add-dynamic-module=/tmp/build/ngx_brotli

openssl ciphers を実行して、OpenSSL ビルドでサポートされるすべての暗号スイートを一覧表示します。

nginx-ingress-controller-5c455d7d9f-nr7dd:/etc/nginx$ openssl ciphers

期待される出力:

TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:RSA-PSK-AES256-GCM-SHA384:DHE-PSK-AES256-GCM-SHA384:RSA-PSK-CHACHA20-POLY1305:DHE-PSK-CHACHA20-POLY1305:ECDHE-PSK-CHACHA20-POLY1305:AES256-GCM-SHA384:PSK-AES256-GCM-SHA384:PSK-CHACHA20-POLY1305:RSA-PSK-AES128-GCM-SHA256:DHE-PSK-AES128-GCM-SHA256:AES128-GCM-SHA256:PSK-AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:ECDHE-PSK-AES256-CBC-SHA384:ECDHE-PSK-AES256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:SRP-AES-256-CBC-SHA:RSA-PSK-AES256-CBC-SHA384:DHE-PSK-AES256-CBC-SHA384:RSA-PSK-AES256-CBC-SHA:DHE-PSK-AES256-CBC-SHA:AES256-SHA:PSK-AES256-CBC-SHA384:PSK-AES256-CBC-SHA:ECDHE-PSK-AES128-CBC-SHA256:ECDHE-PSK-AES128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:SRP-AES-128-CBC-SHA:RSA-PSK-AES128-CBC-SHA256:DHE-PSK-AES128-CBC-SHA256:RSA-PSK-AES128-CBC-SHA:DHE-PSK-AES128-CBC-SHA:AES128-SHA:PSK-AES128-CBC-SHA256:PSK-AES128-CBC-SHA

openssl ciphers -tls1_2 -v を実行して、TLS 1.2 をサポートする暗号スイートを一覧表示します。

nginx-ingress-controller-5c455d7d9f-nr7dd:/etc/nginx$ openssl ciphers -tls1_2 -v

期待される出力:

TLS_AES_256_GCM_SHA384         TLSv1.3 Kx=any      Au=any   Enc=AESGCM(256)            Mac=AEAD
TLS_CHACHA20_POLY1305_SHA256   TLSv1.3 Kx=any      Au=any   Enc=CHACHA20/POLY1305(256) Mac=AEAD
TLS_AES_128_GCM_SHA256         TLSv1.3 Kx=any      Au=any   Enc=AESGCM(128)            Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384  TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(256)            Mac=AEAD
ECDHE-RSA-AES256-GCM-SHA384    TLSv1.2 Kx=ECDH     Au=RSA   Enc=AESGCM(256)            Mac=AEAD
DHE-RSA-AES256-GCM-SHA384      TLSv1.2 Kx=DH       Au=RSA   Enc=AESGCM(256)            Mac=AEAD
ECDHE-ECDSA-CHACHA20-POLY1305  TLSv1.2 Kx=ECDH     Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
ECDHE-RSA-CHACHA20-POLY1305    TLSv1.2 Kx=ECDH     Au=RSA   Enc=CHACHA20/POLY1305(256) Mac=AEAD
...

IANA/RFC の暗号スイート名に対応する OpenSSL 名を確認するには?

暗号スイートには、OpenSSL 名(例:AES128-SHA)と IANA/RFC 名(例:TLS_RSA_WITH_AES_128_CBC_SHA)という 2 つの命名規則があります。

IANA 名を OpenSSL 名に変換するには、以下のいずれかの方法を使用します。

  • OpenSSL–IANA 暗号名マッピングテーブル を参照します。

  • コントローラーコンテナ内で openssl ciphers -convert <IANA-cipher-suite-name> を実行します。例:

    nginx-ingress-controller-5c455d7d9f-nr7dd:/etc/nginx$ openssl ciphers -convert TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    OpenSSL cipher name: ECDHE-RSA-AES128-GCM-SHA256