Partilhar via


Configurar a autenticação de certificado de cliente em Aplicativos de Contêiner do Azure

Os Aplicativos de Contêiner do Azure dão suporte à autenticação de certificado de cliente (também conhecida como TLS mútuo ou mTLS) que permite o acesso ao seu aplicativo de contêiner por meio da autenticação bidirecional. Este artigo mostra como configurar a autorização de certificado de cliente em Aplicativos de Contêiner do Azure.

Quando os certificados de cliente são usados, os certificados TLS são trocados entre o cliente e seu aplicativo de contêiner para autenticar a identidade e criptografar o tráfego. Os certificados de cliente são frequentemente usados em modelos de segurança de "confiança zero" para autorizar o acesso do cliente dentro de uma organização.

Por exemplo, talvez você queira exigir um certificado de cliente para um aplicativo de contêiner que gerencia dados confidenciais.

Os Aplicativos de Contêiner aceitam certificados de cliente no formato PKCS12 quando uma autoridade de certificação (CA) confiável os emite ou quando eles são autoassinados.

Configurar autorização de certificado de cliente

Para configurar o suporte para certificados de cliente, defina a clientCertificateMode propriedade em seu modelo de aplicativo de contêiner.

A propriedade pode ser definida como um dos seguintes valores:

  • require: O certificado do cliente é necessário para todas as solicitações para o aplicativo de contêiner.
  • accept: O certificado do cliente é opcional. Se o certificado do cliente não for fornecido, a solicitação ainda será aceita.
  • ignore: O certificado do cliente é ignorado.

Ingress passa o certificado do cliente para o aplicativo de contêiner se require ou accept estiver definido.

O exemplo de modelo ARM a seguir configura a entrada para exigir um certificado de cliente para todas as solicitações ao aplicativo contêiner.

{
  "properties": {
    "configuration": {
      "ingress": {
        "clientCertificateMode": "require"
      }
    }
  }
}

Observação

Você pode definir o clientCertificateMode diretamente na propriedade de entrada. Ele não está disponível como uma opção explícita na CLI, mas você pode corrigir seu aplicativo usando a CLI do Azure.

Antes de executar os comandos a seguir, certifique-se de substituir os espaços reservados cercados por <> pelos seus próprios valores.

Obtenha a ID do Azure Resource Manager (ARM) do seu aplicativo de contêiner:

APP_ID=$(az containerapp show \
  --name <APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --query id \
  --output tsv)

Corrija a clientCertificateMode propriedade no aplicativo:

az rest \
  --method patch \
  --url "https://management.azure.com/$APP_ID?api-version=<API_VERSION>" \
  --body '{
    "properties": {
      "configuration": {
        "ingress": {
          "clientCertificateMode": "require"
        }
      }
    }
  }'

Observação

Certifique-se de usar uma versão válida e estável da API que suporte esse recurso. Por exemplo, substitua <API_VERSION> no comando por 2025-01-01 ou outra versão suportada.

Modo de certificado do cliente e formato de cabeçalho

O valor para clientCertificateMode varia o que você precisa fornecer para Aplicativos de Contêiner para gerenciar seu certificado:

  • Quando require é definido, o cliente deve fornecer um certificado.
  • Quando accept é definido, o certificado é opcional. Se o cliente fornecer um certificado, este passa para a aplicação no cabeçalho X-Forwarded-Client-Cert, como uma lista separada por ponto-e-vírgula.

Exemplo X-Forwarded-Client-Cert de valor de cabeçalho

O exemplo a seguir é um valor de exemplo do X-Forwarded-Client-Cert cabeçalho que seu aplicativo pode receber:

Hash=<HASH_VALUE>;Cert="-----BEGIN CERTIFICATE-----<CERTIFICATE_VALUE>";Chain="-----BEGIN CERTIFICATE-----<CERTIFICATE_VALUE>";

Desagregação do campo de cabeçalho

Campo Descrição Como usá-lo
Hash A impressão digital SHA-256 do certificado do cliente. Use a impressão digital para identificar ou validar o certificado do cliente.
Cert O certificado de cliente codificado em base64 no formato PEM (certificado único). Analise o certificado para inspecionar metadados, como assunto e emissor.
Chain Um ou mais certificados intermediários codificados em PEM. Forneça os certificados intermediários ao criar uma cadeia de confiança completa para validação.

Passos Seguintes