Configurar o TLS mútuo com uma CA particular

Nesta página, fornecemos instruções para criar uma autoridade de certificação (CA, na sigla em inglês) particular usando o Certificate Authority Service e fazendo upload dos certificados para um recurso TrustConfig do Gerenciador de certificados.

Você também cria os recursos de segurança de rede necessários para configurar o TLS mútuo para balanceadores de carga de aplicativos.

Antes de começar

Permissões

Para ter as permissões necessárias para concluir este guia, peça ao administrador para conceder a você os papéis do IAM a seguir no projeto:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Criar um CA particular

Crie uma CA particular usando o serviço de CA e, em seguida, crie um certificado raiz:

  1. Para criar um pool de CAs, use o comando gcloud privateca pools create:

    gcloud privateca pools create CA_POOL \
       --location=us-central1
    

    Substitua CA_POOL pelo ID ou nome do pool de CAs pai.

  2. Para criar uma CA particular no pool de CAs, use o comando gcloud privateca roots create:

    gcloud privateca roots create CA_ROOT \
       --pool=CA_POOL \
       --subject="CN=my-ca, O=Test LLC" \
       --location=us-central1
    

    Substitua:

    • CA_ROOT: o ID ou o nome do CA particular
    • CA_POOL: o ID ou nome do pool de CAs principais
  3. Para descrever o novo CA e criar o arquivo root.cert, use o comando gcloud privateca roots describe:

    gcloud privateca roots describe CA_ROOT \
       --pool=CA_POOL \
       --location=us-central1 \
       --format='value(pemCaCertificates)' > root.cert
    
    export ROOT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
    

    Substitua:

    • CA_ROOT: o ID ou o nome do CA particular
    • CA_POOL: o ID ou nome do pool de CAs principais

    Para ver mais informações, consulte os seguintes tópicos:

Criar TrustConfig com CA particular

Crie um recurso TrustConfig do Gerenciador de certificados que represente sua ICP usando o certificado raiz gerado usando o CA particular. Presumimos que o recurso TrustConfig seja um armazenamento de confiança simples com uma única âncora de confiança que representa um certificado raiz.

Nas etapas a seguir, substitua TRUST_CONFIG_NAME pelo nome do recurso TrustConfig.

  • Para criar o arquivo trust_config.yaml, use o seguinte comando:

    cat << EOF > trust_config.yaml
    name: TRUST_CONFIG_NAME
    trustStores:
    - trustAnchors:
       - pemCertificate: "${ROOT?}"
    EOF
    
  • Para criar os recursos TrustConfig do Gerenciador de certificados, use o comando gcloud certificate-manager trust-configs import:

    gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME  \
       --source=trust_config.yaml \
       --location=REGION
    

    Substitua:

    REGION: use global para o balanceador de carga de aplicativo interno entre regiões, o balanceador de carga de aplicativo externo global ou o balanceador de carga de aplicativo clássico. Para o balanceador de carga de aplicativo externo regional ou o balanceador de carga de aplicativo interno regional, use a região em que você configurou o balanceador de carga.

Criar os recursos de segurança de rede

Uma política de TLS do servidor (recurso de segurança de rede ServerTLSPolicy) permite especificar o modo TLS do lado do servidor e o recurso TrustConfig a ser usado ao validar certificados de cliente. Quando o cliente apresenta um certificado inválido ou nenhum certificado para o balanceador de carga, o clientValidationMode especifica como a conexão do cliente é processada.

  • Quando clientValidationMode é definido como ALLOW_INVALID_OR_MISSING_CLIENT_CERT, todas as solicitações são transmitidas para o back-end, mesmo que a validação falhe ou o certificado do cliente esteja ausente.
  • Quando clientValidationMode for definido como REJECT_INVALID, somente as solicitações que fornecerem um certificado de cliente que possa ser validado por um recurso TrustConfig serão transmitidas para o back-end.

Para criar o recurso ServerTLSPolicy, conclua as etapas a seguir:

  1. Com base em como você quer lidar com a conexão, selecione uma das opções a seguir.

    Nas etapas a seguir, substitua SERVER_TLS_POLICY_NAME pelo nome da política de TLS do servidor e PROJECT_ID pelo ID do projeto do Google Cloud.

    • Opção 1: clientValidationMode está definido como ALLOW_INVALID_OR_MISSING_CLIENT_CERT.

      Para criar o arquivo server_tls_policy.yaml, use o seguinte comando:

      global

      Para balanceadores de carga de aplicativo externos e internos entre regiões, use o comando:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
        clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
        clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      regional

      Use o comando para balanceadores de carga de aplicativo externos regionais e balanceadores de carga de aplicativo internos regionais:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
        clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT
        clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      EOF
      
    • Opção 2: clientValidationMode está definido como REJECT_INVALID.

      Para criar o arquivo server_tls_policy.yaml, use o seguinte comando:

      global

      Para balanceadores de carga de aplicativo externos e internos entre regiões, use o comando:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
        clientValidationMode: REJECT_INVALID
        clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      EOF
      

      regional

      Use o comando para balanceadores de carga de aplicativo externos regionais e balanceadores de carga de aplicativo internos regionais:

      cat << EOF > server_tls_policy.yaml
      name: SERVER_TLS_POLICY_NAME
      mtlsPolicy:
        clientValidationMode: REJECT_INVALID
        clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      EOF
      
  2. Para criar o recurso ServerTlsPolicy, use o comando gcloud network-security server-tls-policies import:

    global

    Para balanceadores de carga de aplicativo externos e internos entre regiões, use o comando:

    gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \
      --source=server_tls_policy.yaml \
      --location=global
    

    regional

    Use o comando para balanceadores de carga de aplicativo externos regionais e balanceadores de carga de aplicativo internos regionais:

    gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \
      --source=server_tls_policy.yaml \
      --location=REGION
    

Para mais informações, consulte Modos de validação de cliente MTLS.

A seguir