Configure o mTLS de back-end

Esta página fornece instruções para configurar o mTLS de back-end através de certificados autogeridos.

Os passos para configurar o mTLS de back-end são semelhantes ao TLS autenticado de back-end, exceto que também tem de criar um certificado para o balanceador de carga. Este certificado, também conhecido como o certificado de cliente, está anexado ao recurso de configuração de autenticação de back-end. O balanceador de carga usa este certificado de cliente para se autenticar nos back-ends.

Para configurar o mTLS de back-end, tem de fazer o seguinte. Estes passos estão descritos nas secções seguintes deste documento.

  1. Crie um recurso de configuração de confiança que consista em certificados de raiz e intermédios.
  2. Crie um certificado de cliente e carregue-o para o Gestor 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 de 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

Autorizações

Esta secção indica as autorizações necessárias para configurar o mTLS de back-end.
Operação Autorização
Crie uma configuração de confiança certificatemanager.trustconfigs.create no projeto Google Cloud de destino
Crie um certificado de cliente certificatemanager.certs.create no projeto Google Cloud de destino
Crie 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 do back-end de destino
  • Vista geral da configuração

    As secções que se seguem descrevem os passos para configurar o mTLS de back-end com base na arquitetura apresentada no diagrama seguinte.

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

    Crie os certificados de raiz e intermédios

    Esta secção usa a biblioteca OpenSSL para criar o certificado de raiz (ponto de confiança) e o certificado intermédio.

    Um certificado de raiz está no topo da cadeia de certificados. Um certificado intermédio faz parte da cadeia de confiança que remete para o certificado de raiz. O certificado intermédio é assinado criptograficamente pelo certificado de raiz. Quando o equilibrador de carga recebe um certificado do servidor, valida-o estabelecendo uma cadeia de fidedignidade a partir do certificado do servidor até à âncora de fidedignidade configurada.

    Use os seguintes comandos para criar os certificados de raiz e intermédios.

    1. Crie um ficheiro de configuração do OpenSSL.

      No exemplo seguinte, o ficheiro de configuração (example.cnf) contém a secção [ca_exts], que especifica extensões X.509 que marcam o certificado como adequado para uma AC. Para saber mais acerca dos requisitos dos certificados de raiz e intermédios, consulte os 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 de raiz X.509 autoassinado (root.cert). O certificado de raiz é autoassinado com a sua 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 o pedido de assinatura de certificado (CSR) int.req para o certificado intermédio.

      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 o CSR para criar o certificado intermédio X.509 (int.cert). O CSR é assinado com o certificado de 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
      

    Formate os certificados

    Para incluir certificados novos ou existentes num repositório de confiança, formate os certificados numa única linha e armazene-os em variáveis de ambiente para que possam ser referenciados pelo ficheiro 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')
    

    Crie 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 (PKI) no Certificate Manager.

    Para criar um recurso de configuração de confiança, conclua os seguintes passos:

    Consola

    1. Na Google Cloud consola, aceda à página Gestor de certificados.

      Aceda ao Gestor de certificados

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

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

    4. Para Localização, selecione Global ou Regional.

      A localização indica onde o recurso de configuração de confiança está armazenado. Para balanceadores de carga de aplicações externos globais, crie um recurso de configuração de confiança global. Para balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos regionais, crie um recurso de configuração de confiança regional.

    5. Na secção Armazenamento fidedigno, clique em Adicionar âncora fidedigna e carregue o ficheiro de certificado com codificação PEM ou copie o conteúdo do certificado.

    6. Clique em Adicionar.

    7. Na secção Armazenamento fidedigno, clique em Adicionar AC intermédia e carregue o ficheiro de certificado com codificação PEM ou copie o conteúdo do certificado. Este passo permite-lhe adicionar outro nível de confiança entre o certificado de raiz e o certificado do servidor.

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

    9. Para adicionar o certificado que adicionou à lista de autorizaçõ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 ficheiro YAML de configuração de confiança (trust_config.yaml) que especifique os parâmetros de configuração de confiança. Este recurso de configuração de fidedignidade de exemplo contém um repositório de fidedignidade com uma âncora de fidedignidade e um certificado intermédio. Este recurso de configuração de confiança de exemplo lê o conteúdo do certificado das variáveis de ambiente criadas no passo anterior Formate os certificados.

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

      Para criar um repositório de fidedignidade com âncoras de fidedignidade adicionais ou certificados intermédios, adicione pemCertificate linhas na secção adequada.

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

      Global

      Para balanceadores de carga de aplicações externos globais, especifique global como a localização onde o recurso de configuração de fidedignidade 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 aplicações externos regionais e balanceadores de carga de aplicações internos regionais, especifique a região onde 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 o seguinte:

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

    Crie um certificado de cliente

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

    Para ativar os mTLSs de back-end, o equilibrador de carga tem de comprovar a sua identidade ao back-end. Esta autenticação é realizada através de um certificado de cliente que o balanceador de carga apresenta ao back-end. O servidor de back-end tem de validar o certificado de cliente através da sua própria cadeia de confiança.

    Quando estabelece ligação a um servidor de back-end, o balanceador de carga define a Indicação do nome do servidor (SNI) para o nome de anfitrião especificado na configuração TLS. O servidor de back-end seleciona o certificado SSL/TLS adequado com base neste valor SNI. O balanceador de carga espera que o valor SNI corresponda a um nome alternativo de entidade (SAN) indicado no certificado do servidor de back-end.

    Os certificados de cliente podem ser certificados geridos de uma AC privada através do serviço de autoridade de certificação ou certificados de PKI privados autogeridos. Neste exemplo, o certificado de cliente é emitido através de certificados autogeridos. Esta secção usa a biblioteca OpenSSL para criar o certificado de AC de raiz e o certificado de cliente.

    Para criar um certificado de cliente, conclua os seguintes passos:

    1. Crie um ficheiro de configuração do OpenSSL.

      No exemplo seguinte, o ficheiro de configuração (example.cnf) contém a secção [ca_exts], que especifica extensões X.509 que marcam o certificado como adequado para uma autoridade de certificação (AC). O atributo extendedKeyUsage está definido como clientAuth. Para saber mais acerca dos requisitos para certificados de raiz e intermédios, consulte os 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 de raiz X.509 autoassinado (root.cert). O certificado de raiz é autoassinado com a sua 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 ficheiro de configuração para gerar a CSR para o certificado de cliente.

      O seguinte ficheiro de configuração (client.config) contém a secção [extension_requirements], que especifica as extensões X.509 a incluir no CSR. Para saber mais acerca dos requisitos dos certificados de cliente, consulte a secção Requisitos de certificados.

        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 de cliente.

        openssl req -new \
            -config client.config \
            -keyout client.key -out client.csr
      
    5. Crie o certificado de cliente (client.cert) a partir do CSR. O CSR é assinado pelo certificado da CA de raiz para emitir o certificado de 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
      

    Carregue o certificado de cliente no Gestor de certificados

    Para carregar o certificado de cliente ao Gestor de certificados, conclua os seguintes passos:

    Consola

    1. Na Google Cloud consola, aceda à página Gestor de certificados.

      Aceda ao Gestor de certificados

    2. No separador Certificados, clique em Adicionar certificado.

    3. Introduza um nome para o certificado.

      Este nome tem de ser exclusivo para o projeto.

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

    5. Para Localização, selecione Global ou Regional.

      A localização indica onde o recurso de configuração de confiança está armazenado. Para balanceadores de carga de aplicações externos globais, crie um recurso de configuração de confiança global. Para balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos regionais, crie um recurso de configuração de confiança regional.

    6. Para Âmbito, selecione Autenticação de cliente.

    7. Para Tipo de certificado, escolha Criar certificado autogerido.

    8. No campo Certificado, carregue um ficheiro de certificado com codificação PEM ou copie e cole o conteúdo de um certificado com codificação PEM.

    9. No campo Certificado de chave privada, carregue uma chave privada codificada em PEM que não esteja protegida com uma frase secreta ou copie e cole o conteúdo da chave privada codificada em PEM.

    10. Especifique uma etiqueta a associar ao certificado. Pode adicionar mais do que uma etiqueta, se necessário. Para adicionar uma etiqueta, clique no botão Adicionar etiqueta e especifique um key e um value para a etiqueta.

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

    gcloud

    1. Para carregar o certificado de cliente para o gestor de certificados, use o comando gcloud certificate-manager certificates create. O âmbito deste certificado é client-auth, o que indica que este certificado é usado como um certificado de cliente no mTLS de back-end.

      Global

      Para balanceadores de carga de aplicações externos globais, crie um certificado do gestor de certificados global.

      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 do certificado de cliente. Este certificado de cliente com o âmbito client-auth é usado pelo recurso de configuração de autenticação de back-end.

      regional

      Para balanceadores de carga de aplicações externos regionais e balanceadores de carga de aplicações internos regionais, crie um certificado do Gestor de certificados regional.

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

      Substitua o seguinte:

      • CLIENT_CERTIFICATE_NAME: o nome do recurso do certificado do cliente. Este certificado de cliente com o âmbito client-auth é usado pelo recurso de configuração de autenticação de back-end.
      • REGION: a região onde o certificado vai ser criado.

    Crie 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), conclua os seguintes passos.

    Consola

    1. Na Google Cloud consola, aceda à página Configuração de autenticação.

      Aceda à configuração de autenticação

    2. No separador Autenticação de back-end, clique em Criar.
    3. Introduza um nome para o recurso de configuração da autenticação de back-end.
    4. Para Localização, selecione Global ou Regional.
    5. Selecione o recurso de certificado de cliente que criou anteriormente.
    6. Opcional: selecione as raízes de confiança públicas.
    7. Selecione o recurso de configuração de confiança que criou anteriormente.
    8. Clique em Criar.

    Verifique se o recurso de configuração de autenticação de back-end é apresentado.

    gcloud

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

      Global

      Anexe o certificado de 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 o seguinte:

      • BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME : o nome do ficheiro YAML onde 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 criou anteriormente
      • CLIENT_CERTIFICATE_NAME: o nome do recurso do certificado de cliente que criou anteriormente

      regional

      Anexe o certificado de 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 o seguinte:

      • BACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME : o nome do ficheiro YAML onde 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 criou anteriormente
      • CLIENT_CERTIFICATE_NAME: o nome do recurso do certificado de cliente que 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 o seguinte:

      • 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 ficheiro YAML onde 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 o seguinte:

      • 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 ficheiro YAML onde 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 equilibrador de carga, conclua os seguintes passos.

    Consola

    1. Na Google Cloud consola, aceda à página Equilíbrio de carga.

      Aceda a Balanceamento de carga

    2. No separador Back-ends, selecione o serviço de back-end para o qual tem de ativar o TLS autenticado de back-end e o mTLS de back-end.

    3. Clique em Editar.

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

    5. Na secção Autenticação de back-end, selecione a caixa de verificação Ativar.

    6. Opcional: especifique o nome de anfitrião SNI e os SANs aceites para validar o certificado de back-end.

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

    8. Clique em Continuar.

    9. Para atualizar as definiçõ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
      

      Tenha em atenção o nome do serviço de back-end ao qual anexar o recurso BackendAuthenticationConfig. Este nome é denominado BACKEND_SERVICE_NAME nos passos seguintes.

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

      Global

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

      Substitua o seguinte:

      • BACKEND_SERVICE_NAME: o nome do serviço de back-end
      • BACKEND_SERVICE_FILENAME: o nome e o caminho para um ficheiro YAML onde 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 o seguinte:

      • BACKEND_SERVICE_NAME: o nome do serviço de back-end
      • BACKEND_SERVICE_FILENAME: o nome e o caminho para um ficheiro YAML onde a configuração do serviço de back-end é exportada
      • REGION: o nome da Google Cloud região onde 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, pode configurar o nome de anfitrião SNI e os SANs aceites 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 SNI e SAN na declaração YAML seguinte destinam-se apenas a exemplos. Pode substituí-los por valores do mundo real relevantes para a 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 o seguinte:

      • BACKEND_SERVICE_FILENAME: o nome do ficheiro YAML onde a configuração do serviço de back-end é exportada

      • 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

      regional

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

      Os valores SNI e SAN na declaração YAML seguinte destinam-se apenas a exemplos. Pode substituí-los por valores do mundo real relevantes para a 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 o seguinte:

      • BACKEND_SERVICE_FILENAME: o nome do ficheiro YAML onde a configuração do serviço de back-end é exportada

      • PROJECT_ID: o ID do seu Google Cloud projeto

      • REGION: o nome da Google Cloud região onde 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 do serviço de back-end atualizada a partir de um ficheiro, use o comando gcloud compute backend-services import.

      Global

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

      Substitua o seguinte:

      • BACKEND_SERVICE_NAME: o nome do serviço de back-end
      • BACKEND_SERVICE_FILENAME: o nome do ficheiro 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 o seguinte:

      • BACKEND_SERVICE_NAME: o nome do serviço de back-end
      • BACKEND_SERVICE_FILENAME: o nome do ficheiro YAML de configuração do serviço de back-end
      • REGION: o nome da Google Cloud região onde o serviço de back-end está localizado

    Crie um certificado de servidor de back-end

    Esta secção oferece uma opção de configuração adicional para criar um certificado de servidor (folha) assinado pelo certificado intermédio, que faz parte da configuração de confiança. Isto garante que é possível estabelecer uma cadeia de fidedignidade a partir do certificado do servidor até à âncora de fidedignidade.

    Se já criou um recurso de configuração de confiança que contém um certificado intermédio, faça o seguinte:

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

      O seguinte ficheiro de configuração (server.config) contém a secção [extension_requirements], que especifica as extensões X.509 a incluir no CSR. Para saber mais acerca dos requisitos dos certificados de servidor, consulte o artigo Requisitos de certificados.

      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 o CSR para emitir o certificado do servidor X.509 (server.cert). O CSR é assinado pelo certificado intermédio.

      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 liga ao servidor de back-end, o servidor de back-end apresenta o respetivo certificado (server.cert) para se autenticar junto do balanceador de carga, concluindo o processo de autenticação de back-end.

    Opções de configuração SSL adicionais num servidor Web Apache

    Esta secção opcional explica o processo de atualização das opções de configuração SSL num servidor Apache com base nos certificados de cliente e servidor que criou anteriormente.

    1. Copie a chave privada do servidor (server.key) e o certificado do servidor (server.cert) para o servidor 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 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 com codificação PEM que criou anteriormente.

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

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

      Substitua [...] pelo certificado de cliente codificado em PEM que criou anteriormente.

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

      Atualize a configuração SSL do Apache para ativar o tráfego HTTPS através do certificado SSL e da 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 de cliente e especifique o certificado da AC para validação.

          sudo vi /etc/apache2/sites-available/default-ssl.conf
      
          ----
          SSLVerifyClient require
          SSLVerifyDepth 5
          SSLCACertificateFile /etc/ssl/certs/client.cert
          ----
          
    4. Volte a aplicar hash aos certificados da AC.

          sudo c_rehash /etc/ssl/certs/
          
    5. Reinicie o servidor Web Apache para aplicar as alterações.

          sudo systemctl restart apache2.service
          

    O que se segue?