NetScaler Ingressコントローラー

Citrix ADCでのTLSクライアント認証のサポート

TLS クライアント認証では、サーバーは認証のためにクライアントに有効な証明書を要求し、承認されたマシンとユーザーだけがその証明書にアクセスできるようにします。

NetScaler SSLベースの仮想サーバーを使用して、TLSクライアント認証を有効にできます。NetScaler SSL仮想サーバーでクライアント認証を有効にすると、Citrix ADCはSSLハンドシェイク中にクライアント証明書を要求します。アプライアンスは、発行者の署名や有効期限などの通常の制約について、クライアントから提示された証明書をチェックします。

次の図は、NetScaler TLSクライアント認証機能について説明しています。

TLS クライアント認証

TLS クライアント認証は、必須または任意に設定できます。 SSL クライアント認証が必須に設定され、SSL クライアントが有効なクライアント証明書を提供しない場合、接続は切断されます。有効なクライアント証明書とは、特定の認証局によって署名または発行され、期限切れまたは失効していないことを意味します。 オプションとしてマークされている場合、Citrix ADCはクライアント証明書を要求しますが、接続は切断されません。クライアントが証明書を提示しなかったり、証明書が無効であっても、Citrix ADCはSSLトランザクションを続行します。オプションの設定は、2 要素認証などの認証シナリオに便利です。

TLS クライアント認証の設定

TLS クライアント認証を設定するには、次の手順を実行します。

  1. Citrix ADCでTLSサポートを有効にします。

    NetScaler Ingress Controllerは、 入力定義のTLSセクションをNetScalerでのTLSサポートのイネーブラーとして使用します 。 Ingress 定義のサンプルスニペットは次のとおりです。

    spec:
      tls:
       - secretName:
    
  2. CA 証明書を Kubernetes 環境に適用します。

    既存の証明書の Kubernetes シークレットを生成するには、次の kubectl コマンドを使用します。

        kubectl create secret generic tls-ca --from-file=tls.crt=cacerts.pem
    

    注記:

    シークレットの作成時には ‘tls.crt=’ を指定する必要があります。このファイルは、NetScaler Ingress Controller がCAシークレットを解析する際に使用されます。

  3. Ingress を設定してクライアント認証を有効にします。

    Kubernetes にデプロイされたサービスのクライアント証明書認証に使用される、生成された CA シークレットをアタッチするには、次のアノテーションを指定する必要があります。

    ingress.citrix.com/ca-secret: '{"frontend-hotdrinks": "hotdrink-ca-secret"}' 
    

    既定では、クライアント証明書認証はmandatoryに設定されていますが、フロントエンド構成でfrontend_sslprofile注釈を使用してoptionalに構成できます。

    ingress.citrix.com/frontend_sslprofile: '{"clientauth":"ENABLED", “clientcert”: “optional”}'
    

    注記:

    frontend_sslprofileは、フロントエンド Ingress設定のみをサポートします。詳しくは、「 フロントエンド構成」を参照してください。

Citrix ADCでのTLSクライアント認証のサポート