Usando o TLS mútuo

A autenticação da Segurança da Camada de Transporte Mútua (mTLS) assegura que o tráfego seja seguro e confiável em ambas as direções entre um cliente e um servidor. Ele só está disponível para clientes de qualquer nível de plano Enterprise.

Quando o mTLS é configurado, o acesso é concedido apenas para solicitações com um certificado de cliente correspondente. Quando uma solicitação chega ao seu aplicativo, o CIS responde solicitando o certificado do cliente. Se o cliente falhar ao apresentar o certificado, a solicitação não terá permissão para continuar. Caso contrário, a troca de chave continua.

Diagrama de mTLS
de um mTLS

Configurando o TLS mútuo

Mutual TLS ( mTLS ) fornece autenticação de cliente baseada em certificado para aumentar a segurança. mTLS não é ativado por padrão e requer autorização prévia por domínio. Para configurar o mTLS,, siga estas etapas:

  1. Solicitar autorização. Crie um caso de suporte para solicitar a ativação do mTLS para sua conta IBM Cloud.

    Depois que o recurso “ mTLS ” for ativado, ele não poderá mais ser desativado.

  2. Ativar mTLS:

    1. No console CIS, clique em Segurança e selecione a guia Mutual TLS.
    2. Clique em Ativar.
  3. Fazer upload de certificados raiz:

    1. Na tabela Root certificates (Certificados raiz ) na página Mutual TLS, clique em Add (Adicionar ) para definir um novo certificado raiz.

    2. Cole o conteúdo do certificado no campo Conteúdo do certificado. Forneça um nome para o certificado da CA raiz e adicione um ou mais nomes de domínio totalmente qualificados (FQDNs) dos pontos de extremidade que usarão esse certificado.

      Esses FQDNs são os nomes de host utilizados pelos recursos protegidos pela política de aplicativos “ mTLS ”. Você deve associar a CA raiz ao FQDN usado pelo aplicativo protegido.

    3. Clique em Salvar.

      Se estiver usando um certificado intermediário, carregue toda a cadeia de certificados.

  4. Crie uma política de acesso ao mTLS:

    1. Na tabela de políticas de acesso MTLS na página Mutual TLS, clique em Create (Criar ) para criar um aplicativo de acesso.

    2. Selecione ou digite um nome de host que corresponda a um dos FQDNs associados ao certificado raiz carregado e clique em Create (Criar ).

      A política do aplicativo é predefinida para usar uma decisão de non_identity e incluir uma regra que corresponda a qualquer certificado de cliente válido.

  5. Habilite o encaminhamento de certificados de cliente com a API:

    Para encaminhar certificados de clientes validados para o servidor de origem (útil para registro, auditoria ou autenticação de back-end), é necessário ativar o encaminhamento.

    O certificado do cliente é encaminhado somente com a primeira solicitação em cada conexão mTLS.

    Para obter um exemplo de API curl para ativar o encaminhamento de certificados do cliente, consulte a API Update access certificates settings(Atualizar configurações de certificados de acesso ).

    Cabeçalhos do certificado do cliente enviados ao seu servidor de origem:

    • Cf-Client-Cert-Der-Base64: Base64-encoded DER versão do certificado do cliente
    • Cf-Client-Cert-Sha256: SHA-256 impressão digital do certificado do cliente

    Para verificar o status de encaminhamento com a API:

    curl -X GET https://api.cis.cloud.ibm.com/v1/crn:v1:bluemix:public:internet-svcs:global:a/<account-id>:<instance-id>::/zones/<zone-id>/access/certificates/settings \
     -H 'X-Auth-User-Token: Bearer <IAM-TOKEN>'
    
  6. Crie uma regra personalizada do WAF para bloquear solicitações não autenticadas:

    Para aumentar a segurança, especialmente para endpoints confidenciais, como caminhos de login ou APIs, crie uma regra do WAF para bloquear solicitações que não apresentem um certificado de cliente válido.

    1. No console CIS, navegue de volta para a seção Security (Segurança) e selecione a guia Custom rules (Regras personalizadas ).
    2. Clique em Criar.
    3. No painel lateral Criar regra personalizada do WAF, clique em Usar editor de expressões.
    4. Digite a seguinte condição (atualize hostname e path conforme necessário) no campo Use Expression Builder.
       (http.host eq "example.com" and http.request.uri.path eq "/authenticate" and not cf.tls_client_auth.cert_verified)
    
    1. Defina a ação como “Bloquear ”.
    2. Clique em Criar.

    Essa regra permite que o acesso seja autenticado somente se o certificado do cliente for verificado com êxito. As solicitações sem mTLS ou com certificados inválidos são bloqueadas.

Testando o acesso a mTLS

O exemplo a seguir usa o curl para testar a autenticação mTLS fazendo solicitações com e sem um certificado de cliente.

  1. Tentativa de acessar o site sem um certificado de cliente.

    Este exemplo demonstra como usar o curl para testar o acesso a um site que impõe o mTLS. O endereço URL neste exemplo é https://auth.example.com.

    curl -sv https://auth.example.com
    

    Como nenhum certificado de cliente é fornecido, espera-se que a solicitação falhe com uma resposta 403 Forbidden.

  2. Adicione seu certificado de cliente e sua chave privada à solicitação:

    curl -sv https://auth.example.com --cert example.pem --key key.pem
    

    Se o cliente estiver devidamente autenticado, a resposta incluirá um cabeçalho CF_Authorization Set-Cookie, indicando que a autenticação mTLS foi bem-sucedida.

Validando o TLS mútuo

Quando você ativar essa política de acesso, use o fluxo de trabalho a seguir para validar os certificados do cliente:

Todas as solicitações para a origem são avaliadas para um certificado de cliente válido.

  1. O cliente inicia uma conexão enviando uma mensagem Hello.
  2. O aplicativo de acesso responde com um Hello e solicita o certificado do cliente.
  3. O cliente envia seu certificado para validação.
  4. O certificado do cliente é autenticado na autoridade de certificação raiz configurada.
  5. Se uma cadeia de certificados for usada, o sistema também verificará se há certificados expirados e validará toda a cadeia.
  6. Se o certificado do cliente for considerado confiável, é gerado um JSON Web Token (JWT) assinado para o cliente, o que permite que a solicitação e as solicitações subsequentes sejam processadas.
  7. Se o cliente não apresentar um certificado válido, o servidor retornará uma resposta 403 Forbidden.

Para recuperar certificados de acesso com a API, consulte Listar certificados de acesso.