Configurar o mTLS de back-end

Nesta página, fornecemos instruções para configurar o mTLS de back-end usando certificados autogerenciados.

As etapas para configurar o mTLS de back-end são semelhantes ao TLS autenticado de back-end, exceto que também é necessário criar um certificado para o balanceador de carga. Esse certificado, também conhecido como certificado do cliente, é anexado ao recurso de configuração de autenticação do back-end. O balanceador de carga usa esse certificado de cliente para se autenticar nos back-ends.

Para configurar o mTLS de back-end, faça o seguinte: Essas etapas são descritas nas seções a seguir deste documento.

  1. Crie um recurso de configuração de confiança que consiste em certificados raiz e intermediários.
  2. Crie um certificado do cliente e faça upload dele para o Gerenciador de certificados.
  3. Crie um recurso de configuração de autenticação de back-end que faça referência à configuração de confiança e ao certificado do cliente.
  4. Anexe o recurso de configuração de autenticação de back-end ao serviço de back-end do balanceador de carga.

Antes de começar

Permissões

Esta seção lista as permissões necessárias para configurar o mTLS de back-end.
Operação Permissão
Criar uma configuração de confiança certificatemanager.trustconfigs.create no Google Cloud projeto de destino
Criar um certificado do cliente certificatemanager.certs.create no Google Cloud projeto de destino
Criar um recurso de configuração de autenticação de back-end
  • certificatemanager.certs.use no certificado de destino
  • certificatemanager.trustconfigs.use na configuração de confiança de destino
  • networksecurity.backendauthenticationconfigs.create no projeto Google Cloud de destino
  • Anexe o recurso de configuração de autenticação de back-end ao serviço de back-end do balanceador de carga.
  • compute.backendservice.update no serviço de back-end de destino
  • networksecurity.backendauthenticationconfigs.use no recurso de configuração de autenticação de back-end de destino
  • Visão geral da configuração

    As seções a seguir descrevem as etapas para configurar o mTLS de back-end com base na arquitetura mostrada no diagrama a seguir.

    Componentes do mTLS de back-end.
    Componentes mTLS de back-end (clique para ampliar).

    Criar os certificados raiz e intermediário

    Esta seção usa a biblioteca OpenSSL para criar o certificado raiz (âncora de confiança) e o certificado intermediário.

    Um certificado raiz está no topo da cadeia de certificados. Um certificado intermediário faz parte da cadeia de confiança de volta ao certificado raiz. O certificado intermediário é assinado criptograficamente pelo certificado raiz. Quando o balanceador de carga recebe um certificado de servidor, ele o valida estabelecendo uma cadeia de confiança do certificado de servidor de volta à âncora de confiança configurada.

    Use os comandos a seguir para criar os certificados raiz e intermediários.

    1. Crie um arquivo de configuração OpenSSL.

      No exemplo a seguir, o arquivo de configuração (example.cnf) contém a seção [ca_exts], que especifica extensões X.509 que marcam o certificado como adequado para uma CA. Para saber mais sobre os requisitos de certificados raiz e intermediários, consulte Requisitos de certificado.

      cat > example.cnf << EOF
      [req]
      distinguished_name = empty_distinguished_name
      
      [empty_distinguished_name]
      # Kept empty to allow setting via -subj command-line argument.
      
      [ca_exts]
      basicConstraints=critical,CA:TRUE
      keyUsage=keyCertSign
      extendedKeyUsage=serverAuth
      
      EOF
      
    2. Crie um certificado raiz X.509 autoassinado (root.cert). O certificado raiz é autoassinado com a própria chave privada (root.key).

      openssl req -x509 \
          -new -sha256 -newkey rsa:2048 -nodes \
          -days 3650 -subj '/CN=root' \
          -config example.cnf \
          -extensions ca_exts \
          -keyout root.key -out root.cert
      
    3. Crie a solicitação de assinatura de certificado (CSR) int.req para o certificado intermediário.

      openssl req -new \
          -sha256 -newkey rsa:2048 -nodes \
          -subj '/CN=int' \
          -config example.cnf \
          -extensions ca_exts \
          -keyout int.key -out int.req
      
    4. Assine a CSR para criar o certificado intermediário X.509 (int.cert). A CSR é assinada usando o certificado raiz.

      openssl x509 -req \
          -CAkey root.key -CA root.cert \
          -set_serial 1 \
          -days 3650 \
          -extfile example.cnf \
          -extensions ca_exts \
          -in int.req -out int.cert
      

    Formatar os certificados

    Para incluir certificados novos ou atuais em um armazenamento de confiança, formate os certificados em uma única linha e armazene-os em variáveis de ambiente para que possam ser referenciados pelo arquivo YAML de configuração de confiança.

    export ROOT_CERT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
    
    export INTERMEDIATE_CERT=$(cat int.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
    

    Criar uma configuração de confiança

    Uma configuração de confiança é um recurso que representa a configuração da infraestrutura de chave pública (ICP) no Gerenciador de certificados.

    Para criar um recurso de configuração de confiança, siga estas etapas:

    Console

    1. No console do Google Cloud , acesse a página Certificate Manager.

      Acessar o Gerenciador de certificados

    2. Na guia Configurações de confiança, clique em Adicionar configuração de confiança.

    3. Insira um nome para a configuração.

    4. Em Local, selecione Global ou Regional.

      O local indica onde o recurso de configuração de confiança está armazenado. Para balanceadores de carga de aplicativo externos globais, crie um recurso de configuração de confiança global. Para balanceadores de carga de aplicativo externos regionais e balanceadores de carga de aplicativo internos regionais, crie um recurso de configuração de confiança regional.

    5. Na seção Repositório de confiança, clique em Adicionar âncora de confiança e faça upload do arquivo de certificado codificado em PEM ou copie o conteúdo do certificado.

    6. Clique em Adicionar.

    7. Na seção Repositório de confiança, clique em Adicionar CA intermediária e faça upload do arquivo de certificado codificado em PEM ou copie o conteúdo do certificado. Essa etapa permite adicionar outro nível de confiança entre o certificado raiz e o certificado do servidor.

    8. Clique em Adicionar para incluir a AC intermediária.

    9. Para adicionar o certificado que você incluiu na lista de permissões, clique em Adicionar.

    10. Clique em Criar.

    Verifique se o novo recurso de configuração de confiança aparece na lista de configurações.

    gcloud

    1. Crie um arquivo YAML de configuração de confiança (trust_config.yaml) que especifica os parâmetros de configuração de confiança. Este exemplo de recurso de configuração de confiança contém um repositório de confiança com uma âncora de confiança e um certificado intermediário. Este exemplo de recurso de configuração de confiança lê o conteúdo do certificado das variáveis de ambiente criadas na etapa anterior Formatar os certificados.

      cat << EOF > trust_config.yaml
      trustStores:
      - trustAnchors:
        - pemCertificate: "${ROOT_CERT}"
        intermediateCas:
        - pemCertificate: "${INTERMEDIATE_CERT}"
      EOF
      

      Para criar um repositório de confiança com âncoras de confiança adicionais ou certificados intermediários, adicione linhas de pemCertificate na seção apropriada.

    2. Para importar o arquivo YAML de configuração de confiança, use o comando gcloud certificate-manager trust-configs import.

      global

      Para balanceadores de carga de aplicativo externos globais, especifique global como o local em que o recurso de configuração de confiança está armazenado.

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

      Substitua TRUST_CONFIG_NAME pelo nome da configuração de confiança.

      regional

      Para balanceadores de carga de aplicativo externos regionais e balanceadores de carga de aplicativo internos regionais, especifique a região em que o recurso de configuração de confiança está armazenado.

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

      Substitua:

      • TRUST_CONFIG_NAME: o nome do recurso de configuração de confiança
      • REGION: a região em que o recurso de configuração de confiança está armazenado

    Criar um certificado do cliente

    No mTLS de back-end, o balanceador de carga atua como cliente e o back-end como servidor.

    Para ativar o mTLS de back-end, o balanceador de carga precisa provar sua identidade para o back-end. Essa autenticação é realizada usando um certificado do cliente que o balanceador de carga apresenta ao back-end. O servidor de back-end precisa validar o certificado do cliente usando a própria cadeia de confiança.

    Ao se conectar a um servidor de back-end, o balanceador de carga define a indicação de nome do servidor (SNI, na sigla em inglês) como o nome do host especificado na configuração de TLS. O servidor de back-end seleciona o certificado SSL/TLS adequado com base nesse valor de SNI. O balanceador de carga espera que o valor SNI corresponda a um nome alternativo do sujeito (SAN) listado no certificado do servidor de back-end.

    Os certificados de cliente podem ser gerenciados por uma CA particular usando o Certificate Authority Service ou certificados de ICP particular autogerenciados. Neste exemplo, o certificado do cliente é emitido usando certificados autogerenciados. Esta seção usa a biblioteca OpenSSL para criar o certificado da CA raiz e o certificado do cliente.

    Para criar um certificado do cliente, siga estas etapas:

    1. Crie um arquivo de configuração OpenSSL.

      No exemplo a seguir, o arquivo de configuração (example.cnf) contém a seção [ca_exts], que especifica extensões X.509 que marcam o certificado como adequado para uma autoridade de certificação (CA). O atributo extendedKeyUsage está definido como clientAuth. Para saber mais sobre os requisitos de certificados raiz e intermediários, consulte Requisitos de certificado.

        cat > example.cnf << EOF
        [req]
        distinguished_name = empty_distinguished_name
      
        [empty_distinguished_name]
        # Kept empty to allow setting via -subj command-line argument.
      
        [ca_exts]
        basicConstraints=critical,CA:TRUE
        keyUsage=keyCertSign
        extendedKeyUsage=clientAuth
      
        EOF
      
    2. Crie um certificado de CA raiz X.509 autoassinado (root.cert). O certificado raiz é autoassinado com a própria chave privada (root.key).

        openssl req -x509 \
            -new -sha256 -newkey rsa:2048 -nodes \
            -days 3650 -subj '/CN=root' \
            -config example.cnf \
            -extensions ca_exts \
            -keyout root.key -out root.cert
      
    3. Crie um arquivo de configuração para gerar a CSR do certificado do cliente.

      O arquivo de configuração a seguir (client.config) contém a seção [extension_requirements], que especifica as extensões X.509 a serem incluídas na CSR. Para saber mais sobre os requisitos para certificados do cliente, consulte Requisitos de certificado.

        cat > client.config << EOF
        [req]
        default_bits              = 2048
        req_extensions            = extension_requirements
        distinguished_name        = dn_requirements
        prompt                    = no
      
        [extension_requirements]
        basicConstraints          = critical, CA:FALSE
        keyUsage                  = critical, nonRepudiation, digitalSignature, keyEncipherment
        extendedKeyUsage          = clientAuth
      
        [dn_requirements]
        countryName               = US
        stateOrProvinceName       = California
        localityName              = San Francisco
        0.organizationName        = example
        organizationalUnitName    = test
        commonName                = test.example.com
        emailAddress              = test@example.com
      
        EOF
      
    4. Crie a CSR (client.csr) para o certificado do cliente.

        openssl req -new \
            -config client.config \
            -keyout client.key -out client.csr
      
    5. Crie o certificado do cliente (client.cert) com base na CSR. A CSR é assinada pelo certificado da CA raiz para emitir o certificado do cliente X.509.

        openssl x509 -req \
            -CAkey root.key -CA root.cert \
            -days 365 \
            -extfile client.config \
            -extensions extension_requirements \
            -in client.csr -out client.cert
      

    Fazer upload do certificado do cliente para o Gerenciador de certificados

    Para fazer upload do certificado do cliente no Certificate Manager, siga estas etapas:

    Console

    1. No console do Google Cloud , acesse a página Certificate Manager.

      Acessar o Gerenciador de certificados

    2. Na guia Certificados, clique em Adicionar certificado.

    3. Digite um nome para o certificado.

      O nome precisa ser exclusivo no projeto.

    4. Opcional: insira uma descrição para o certificado. A descrição ajuda a identificar um certificado específico mais tarde.

    5. Em Local, selecione Global ou Regional.

      O local indica onde o recurso de configuração de confiança está armazenado. Para balanceadores de carga de aplicativo externos globais, crie um recurso de configuração de confiança global. Para balanceadores de carga de aplicativo externos regionais e balanceadores de carga de aplicativo internos regionais, crie um recurso de configuração de confiança regional.

    6. Em Escopo, selecione Autenticação do cliente.

    7. Em Tipo de certificado, escolha Criar certificado autogerenciado.

    8. No campo Certificado, faça upload de um arquivo de certificado codificado em PEM ou copie e cole o conteúdo de um certificado codificado em PEM.

    9. No campo Certificado de chave privada, faça upload de uma chave privada codificada em PEM que não esteja protegida com uma senha longa ou copie e cole o conteúdo da chave privada codificada em PEM.

    10. Especifique um rótulo para associar ao certificado. Se necessário, adicione mais de um marcador. Para adicionar um rótulo, clique no botão Adicionar rótulo e especifique um key e um value para o rótulo.

    11. Clique em Criar. Verifique se o novo certificado aparece na lista de certificados.

    gcloud

    1. Para fazer upload do certificado do cliente para o Gerenciador de certificados, use o comando gcloud certificate-manager certificates create. O escopo desse certificado é client-auth, o que indica que ele é usado como um certificado de cliente no mTLS de back-end.

      global

      Para balanceadores de carga de aplicativo externos globais, crie um certificado global do Gerenciador de certificados.

      gcloud certificate-manager certificates create CLIENT_ CERTIFICATE_NAME \
          --certificate-file=client.cert \
          --private-key-file=client.key \
          --scope=client-auth \
          --location=global
      

      Substitua CLIENT_CERTIFICATE_NAME pelo nome do recurso de certificado do cliente. Esse certificado do cliente com o escopo client-auth é usado pelo recurso de configuração de autenticação de back-end.

      regional

      Para balanceadores de carga de aplicativo externos regionais e internos regionais, crie um certificado regional do Gerenciador de certificados.

      gcloud certificate-manager certificates create CLIENT_ CERTIFICATE_NAME \
          --certificate-file=client.cert \
          --private-key-file=client.key \
          --scope=client-auth \
          --location=REGION
      

      Substitua:

      • CLIENT_CERTIFICATE_NAME: o nome do recurso de certificado do cliente. Esse certificado do cliente com o escopo client-auth é usado pelo recurso de configuração de autenticação de back-end.
      • REGION: a região em que o certificado será criado.

    Criar um recurso de configuração de autenticação de back-end

    Para criar um recurso de configuração de autenticação de back-end (BackendAuthenticationConfig), siga estas etapas.

    Console

    1. No console do Google Cloud , acesse a página Configuração de autenticação.

      Acessar "Configuração de autenticação"

    2. Na guia Autenticação de back-end, clique em Criar.
    3. Insira um nome para o recurso de configuração de autenticação de back-end.
    4. Em Local, selecione Global ou Regional.
    5. Selecione o recurso de certificado do cliente que você criou anteriormente.
    6. Opcional: selecione as raízes de confiança públicas.
    7. Selecione o recurso de configuração de confiança que você criou antes.
    8. Clique em Criar.

    Verifique se o recurso de configuração de autenticação de back-end está sendo mostrado.

    gcloud

    1. Crie um arquivo YAML que especifique de forma declarativa os diferentes atributos do recurso de configuração de autenticação de back-end.

      global

      Anexe o certificado do cliente ao recurso de configuração de autenticação de back-end para ativar o mTLS de back-end.

      cat << EOF > BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME.yaml
      name: projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/BACKEND_AUTH_CONFIG_NAME
      trustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME
      clientCertificate: projects/PROJECT_ID/locations/global/certificates/CLIENT_ CERTIFICATE_NAME
      wellKnownRoots: PUBLIC_ROOTS
      EOF
      

      Substitua:

      • BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME : o nome do arquivo YAML em que o recurso de configuração de autenticação de back-end está definido.
      • PROJECT_ID: o ID do seu Google Cloud projeto
      • BACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-end.
      • TRUST_CONFIG_NAME: o nome do recurso de configuração de confiança que você criou anteriormente
      • CLIENT_CERTIFICATE_NAME: o nome do recurso de certificado do cliente que você criou anteriormente

      regional

      Anexe o certificado do cliente ao recurso de configuração de autenticação de back-end para ativar o mTLS de back-end.

      cat << EOF > BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME.yaml
      name: projects/PROJECT_ID/locations/REGION/backendAuthenticationConfigs/BACKEND_AUTH_CONFIG_NAME
      trustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME
      clientCertificate: projects/PROJECT_ID/locations/REGION/certificates/CLIENT_ CERTIFICATE_NAME
      wellKnownRoots: PUBLIC_ROOTS
      EOF
      

      Substitua:

      • BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME : o nome do arquivo YAML em que o recurso de configuração de autenticação de back-end está definido.
      • PROJECT_ID: o ID do seu Google Cloud projeto
      • REGION: o nome da região.
      • BACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-end.
      • TRUST_CONFIG_NAME: o nome do recurso de configuração de confiança que você criou anteriormente
      • CLIENT_CERTIFICATE_NAME: o nome do recurso de certificado do cliente que você criou anteriormente
    2. Para importar a configuração de autenticação de back-end, use o comando gcloud network-security backend-authentication-configs import.

      global

      gcloud network-security backend-authentication-configs import BACKEND_AUTH_CONFIG_NAME \
          --source=BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME.yaml \
          --location=global
      

      Substitua:

      • BACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-end.

      • BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME: o nome do arquivo YAML em que o recurso de configuração de autenticação de back-end está definido.

      regional

      gcloud network-security backend-authentication-configs import BACKEND_AUTH_CONFIG_NAME \
          --source=BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME.yaml \
          --location=REGION
      

      Substitua:

      • BACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-end.

      • BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME: o nome do arquivo YAML em que o recurso de configuração de autenticação de back-end está definido.

      • REGION: o nome da região.

    Anexe o recurso de configuração de autenticação de back-end ao serviço de back-end do balanceador de carga.

    Para anexar a configuração de autenticação de back-end (recurso BackendAuthenticationConfig) ao serviço de back-end do balanceador de carga, siga estas etapas.

    Console

    1. No console do Google Cloud , acesse a página Balanceamento de carga.

      Acessar o "Balanceamento de carga"

    2. Na guia Back-ends, selecione o serviço de back-end em que você precisa ativar o TLS autenticado de back-end e o mTLS de back-end.

    3. Clique em Editar.

    4. Expanda a seção Configurações avançadas.

    5. Na seção Autenticação de back-end, marque a caixa de seleção Ativar.

    6. Opcional: especifique o nome do host SNI e os SANs aceitos para validar o certificado de back-end.

    7. Para anexar o recurso de configuração de autenticação de back-end ao serviço de back-end, na lista Configuração de autenticação de back-end, selecione o recurso de configuração de autenticação de back-end.

    8. Clique em Continuar.

    9. Para atualizar as configurações do serviço de back-end, clique em Atualizar.

    gcloud

    1. Para listar todos os recursos de serviço de back-end no seu projeto, use o comando gcloud compute backend-services list.

      gcloud compute backend-services list
      

      Anote o nome do serviço de back-end a que o recurso BackendAuthenticationConfig será anexado. Esse nome é chamado de BACKEND_SERVICE_NAME nas etapas a seguir.

    2. Para exportar a configuração do serviço de back-end para um arquivo, use o comando gcloud compute backend-services export.

      global

      gcloud compute backend-services export BACKEND_SERVICE_NAME \
          --destination=BACKEND_SERVICE_FILENAME.yaml \
          --global
      

      Substitua:

      • BACKEND_SERVICE_NAME: o nome do serviço de back-end.
      • BACKEND_SERVICE_FILENAME: o nome e o caminho para um arquivo YAML em que a configuração do serviço de back-end é exportada

      regional

      gcloud compute backend-services export BACKEND_SERVICE_NAME \
          --destination=BACKEND_SERVICE_FILENAME.yaml \
          --region=REGION
      

      Substitua:

      • BACKEND_SERVICE_NAME: o nome do serviço de back-end.
      • BACKEND_SERVICE_FILENAME: o nome e o caminho para um arquivo YAML em que a configuração do serviço de back-end é exportada
      • REGION: o nome da regiãoGoogle Cloud em que o serviço de back-end está localizado
    3. Atualize o atributo tlsSettings do serviço de back-end, apontando-o para o recurso de configuração de autenticação de back-end. Além disso, é possível configurar o nome do host do SNI e os SANs aceitos no serviço de back-end para validar o certificado de back-end.

      global

      Anexe o recurso de configuração de autenticação de back-end global ao serviço de back-end.

      Os valores de SNI e SAN na declaração YAML a seguir são apenas exemplos. Você pode substituir esses valores por dados reais relevantes para sua configuração.

        cat << EOF >> BACKEND_SERVICE_FILENAME.yaml
        tlsSettings:
          authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/BACKEND_AUTH_CONFIG_NAME
          sni: examplepetstore.com
          subjectAltNames:
          - dnsName: examplepetstore.com
          - dnsName: api.examplepetstore.com
        EOF
        

      Substitua:

      • BACKEND_SERVICE_FILENAME: o nome do arquivo YAML em que a configuração do serviço de back-end é exportada

      • PROJECT_ID: ID do seu projeto Google Cloud

      • BACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-end.

      regional

      Anexe o recurso de configuração de autenticação de back-end regional ao serviço de back-end.

      Os valores de SNI e SAN na declaração YAML a seguir são apenas exemplos. Você pode substituir esses valores por dados reais relevantes para sua configuração.

        cat << EOF >> BACKEND_SERVICE_FILENAME.yaml
        tlsSettings:
          authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/REGION/backendAuthenticationConfigs/BACKEND_AUTH_CONFIG_NAME
          sni: examplepetstore.com
          subjectAltNames:
          - dnsName: examplepetstore.com
          - dnsName: api.examplepetstore.com
        EOF
        

      Substitua:

      • BACKEND_SERVICE_FILENAME: o nome do arquivo YAML em que a configuração do serviço de back-end é exportada

      • PROJECT_ID: ID do seu projeto Google Cloud

      • REGION: o nome da Google Cloud região em que a configuração de autenticação de back-end é criada

      • BACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-end.

    4. Para importar a configuração atualizada do serviço de back-end de um arquivo, use o comando gcloud compute backend-services import.

      global

        gcloud compute backend-services import BACKEND_SERVICE_NAME \
            --source=BACKEND_SERVICE_FILENAME.yaml \
            --global
      

      Substitua:

      • BACKEND_SERVICE_NAME: o nome do serviço de back-end.
      • BACKEND_SERVICE_FILENAME: o nome do arquivo YAML de configuração do serviço de back-end.

      regional

        gcloud compute backend-services import BACKEND_SERVICE_NAME \
            --source=BACKEND_SERVICE_FILENAME.yaml \
            --region=REGION
      

      Substitua:

      • BACKEND_SERVICE_NAME: o nome do serviço de back-end.
      • BACKEND_SERVICE_FILENAME: o nome do arquivo YAML de configuração do serviço de back-end.
      • REGION: o nome da regiãoGoogle Cloud em que o serviço de back-end está localizado

    Criar um certificado de servidor de back-end

    Nesta seção, fornecemos uma opção de configuração adicional para criar um certificado de servidor (folha) assinado pelo certificado intermediário, que faz parte da configuração de confiança. Isso garante que uma cadeia de confiança possa ser estabelecida do certificado do servidor de volta à âncora de confiança.

    Se você já criou um recurso de configuração de confiança que contém um certificado intermediário, faça o seguinte:

    1. Crie um arquivo de configuração para gerar a CSR do certificado do servidor.

      O arquivo de configuração a seguir (server.config) contém a seção [extension_requirements], que especifica as extensões X.509 a serem incluídas na CSR. Para saber mais sobre os requisitos para certificados de servidor, consulte Requisitos de certificado.

      cat > server.config << EOF
      [req]
      default_bits              = 2048
      req_extensions            = extension_requirements
      distinguished_name        = dn_requirements
      prompt                    = no
      
      [extension_requirements]
      basicConstraints          = critical, CA:FALSE
      keyUsage                  = critical, nonRepudiation, digitalSignature, keyEncipherment
      extendedKeyUsage          = serverAuth
      subjectAltName            = @alt_names
      
      [alt_names]
      DNS.1 = examplepetstore.com
      DNS.2 = api.examplepetstore.com
      
      [dn_requirements]
      countryName               = US
      stateOrProvinceName       = California
      localityName              = San Francisco
      0.organizationName        = example
      organizationalUnitName    = test
      commonName                = examplepetstore.com
      emailAddress              = test@examplepetstore.com
      
      EOF
      
    2. Crie a CSR (server.csr) para o certificado do servidor.

      openssl req -new \
          -sha256 -newkey rsa:2048 -nodes \
          -config server.config \
          -keyout server.key -out server.csr
      
    3. Assine a CSR para emitir o certificado do servidor X.509 (server.cert). A CSR é assinada pelo certificado intermediário.

      openssl x509 -req \
          -CAkey int.key -CA int.cert \
          -days 365 \
          -extfile server.config \
          -extensions extension_requirements \
          -in server.csr -out server.cert
      

      Quando o balanceador de carga se conecta ao servidor de back-end, ele apresenta o certificado (server.cert) para se autenticar no balanceador de carga, concluindo o processo de autenticação de back-end.

    Outras opções de configuração de SSL em um servidor da Web Apache

    Esta seção opcional mostra o processo de atualização das opções de configuração SSL em um servidor Apache com base nos certificados de cliente e servidor criados anteriormente.

    1. Copie a chave privada do servidor (server.key) e o certificado do servidor (server.cert) para o servidor da Web Apache.

          cat > server.key << EOF
          -----BEGIN PRIVATE KEY-----
          [...]
          -----END PRIVATE KEY-----
          EOF
      
          sudo cp ./server.key /etc/ssl/private/server.key
          

      Substitua [...] pela chave privada do servidor codificada em PEM que você criou anteriormente.

          cat > server.cert << EOF
          -----BEGIN CERTIFICATE-----
          [...]
          -----END CERTIFICATE-----
          EOF
      
          sudo cp ./server.cert /etc/ssl/certs/server.cert
          

      Substitua [...] pelo certificado do servidor codificado em PEM que você criou anteriormente.

    2. Faça upload do certificado do cliente para a configuração de confiança do servidor para validar o certificado do cliente.

            cat > client.cert << EOF
            -----BEGIN CERTIFICATE-----
            [...]
            -----END CERTIFICATE-----
            EOF
      
            sudo cp ./client.cert /etc/ssl/certs/client.cert
            

      Substitua [...] pelo certificado do cliente codificado em PEM que você criou anteriormente.

    3. Atualize a configuração de SSL do servidor da Web Apache.

      Atualize a configuração SSL do Apache para ativar o tráfego HTTPS usando o certificado SSL e a chave privada especificados.

          sudo vi /etc/apache2/sites-available/default-ssl.conf
      
          ----
          SSLCertificateFile      /etc/ssl/certs/server.cert
          SSLCertificateKeyFile /etc/ssl/private/server.key
          ----
          

      Atualize a configuração SSL do Apache para exigir a autenticação do certificado do cliente e especifique o certificado da CA para validação.

          sudo vi /etc/apache2/sites-available/default-ssl.conf
      
          ----
          SSLVerifyClient require
          SSLVerifyDepth 5
          SSLCACertificateFile /etc/ssl/certs/client.cert
          ----
          
    4. Faça um rehash dos certificados de CA.

          sudo c_rehash /etc/ssl/certs/
          
    5. Reinicie o servidor da Web Apache para aplicar as mudanças.

          sudo systemctl restart apache2.service
          

    A seguir