Esta página fornece instruções para configurar o TLS autenticado de back-end, também conhecido como autenticação de back-end, através de certificados autogeridos.
Para configurar o TLS autenticado no back-end, tem de fazer o seguinte. Estes passos estão descritos nas secções seguintes deste documento.
- Crie um recurso de configuração de confiança que consista em certificados de raiz e intermédios.
- Crie um recurso de configuração de autenticação de back-end que faça referência à configuração de confiança.
- 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
- Reveja a vista geral do TLS autenticado no back-end e do mTLS no back-end.
- Reveja a opção Gerir configurações de confiança.
Se quiser seguir as instruções neste guia através da CLI Google Cloud, tem de a instalar. Pode encontrar comandos relacionados com o equilíbrio de carga nas referências da API e da CLI gcloud.
Se não tiver executado a CLI gcloud anteriormente, execute primeiro o comando
gcloud initpara fazer a autenticação.Ative as seguintes APIs: Compute Engine API, Certificate Manager API, Network Security e Network Services API. Para saber mais, consulte o artigo Ativar APIs.
Configure um balanceador de carga com qualquer um dos seguintes back-ends suportados:
- Back-ends do grupo de instâncias de VM
- NEGs de conetividade híbrida
- NEGs zonais
Autorizações
Esta secção indica as autorizações necessárias para configurar o TLS autenticado no back-end.| Operação | Autorização |
|---|---|
| Crie uma configuração de confiança | certificatemanager.trustconfigs.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 destinocertificatemanager.trustconfigs.use na configuração
de confiança de destinonetworksecurity.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 destinonetworksecurity.backendauthenticationconfigs.use no recurso de configuração de autenticação do back-end de destino |
Vista geral da configuração
As secções seguintes descrevem os passos para configurar o TLS autenticado no back-end com base na arquitetura apresentada no diagrama seguinte.
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.
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 EOFCrie 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.certCrie o pedido de assinatura de certificado (CSR)
int.reqpara 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.reqAssine 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
Na Google Cloud consola, aceda à página Gestor de certificados.
No separador Configurações de confiança, clique em Adicionar configuração de confiança.
Introduza um nome para a configuração.
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.
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.
Clique em Adicionar.
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.
Clique em Adicionar para adicionar a AC intermediária.
Para adicionar o certificado que adicionou à lista de autorizações, clique em Adicionar.
Clique em Criar.
Verifique se o novo recurso de configuração de confiança aparece na lista de configurações.
gcloud
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}" EOFPara criar um repositório de fidedignidade com âncoras de fidedignidade adicionais ou certificados intermédios, adicione
pemCertificatelinhas na secção adequada.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
globalcomo 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=globalSubstitua
TRUST_CONFIG_NAMEpelo 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=REGIONSubstitua o seguinte:
TRUST_CONFIG_NAME: o nome do recurso config de confiançaREGION: a região onde o recurso de configuração de confiança está armazenado
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
- Na Google Cloud consola, aceda à página Configuração de autenticação.
- No separador Autenticação de back-end, clique em Criar.
- Introduza um nome para o recurso de configuração da autenticação de back-end.
- Para Localização, selecione Global ou Regional.
- Opcional: selecione as raízes de confiança públicas.
- Selecione o recurso de configuração de confiança que criou anteriormente.
- Clique em Criar.
Verifique se o recurso de configuração de autenticação de back-end é apresentado.
gcloud
Crie um ficheiro YAML que especifique declarativamente os diferentes atributos do recurso de configuração de autenticação de back-end.
Global
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 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á definidoPROJECT_ID: o ID do seu Google Cloud projetoBACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-endTRUST_CONFIG_NAME: o nome do recurso de configuração de confiança que criou anteriormente
regional
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 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á definidoPROJECT_ID: o ID do seu Google Cloud projetoREGION: o nome da regiãoBACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-endTRUST_CONFIG_NAME: o nome do recurso de configuração de confiança que criou anteriormente
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=globalSubstitua o seguinte:
BACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-endBACKEND_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=REGIONSubstitua o seguinte:
BACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-endBACKEND_AUTHENTICATION_CONFIG_RESOURCE_FILENAME: o nome do ficheiro YAML onde o recurso de configuração de autenticação de back-end está definidoREGION: 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
Na Google Cloud consola, aceda à página Equilíbrio de carga.
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.
Clique em Editar.
Expanda a secção Configurações avançadas.
Na secção Autenticação de back-end, selecione a caixa de verificação Ativar.
Opcional: especifique o nome de anfitrião SNI e os SANs aceites para validar o certificado de back-end.
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.
Clique em Continuar.
Para atualizar as definições do serviço de back-end, clique em Atualizar.
gcloud
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 é denominadoBACKEND_SERVICE_NAMEnos passos seguintes.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 \ --globalSubstitua o seguinte:
BACKEND_SERVICE_NAME: o nome do serviço de back-endBACKEND_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=REGIONSubstitua o seguinte:
BACKEND_SERVICE_NAME: o nome do serviço de back-endBACKEND_SERVICE_FILENAME: o nome e o caminho para um ficheiro YAML onde a configuração do serviço de back-end é exportadaREGION: o nome da Google Cloud região onde o serviço de back-end está localizado
Atualize o atributo
tlsSettingsdo 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 EOFSubstitua o seguinte:
BACKEND_SERVICE_FILENAME: o nome do ficheiro YAML onde a configuração do serviço de back-end é exportadaPROJECT_ID: o ID do seu Google Cloud projetoBACKEND_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 EOFSubstitua o seguinte:
BACKEND_SERVICE_FILENAME: o nome do ficheiro YAML onde a configuração do serviço de back-end é exportadaPROJECT_ID: o ID do seu Google Cloud projetoREGION: o nome da Google Cloud região onde a configuração de autenticação de back-end é criadaBACKEND_AUTH_CONFIG_NAME: o nome do recurso de configuração de autenticação de back-end
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 \ --globalSubstitua o seguinte:
BACKEND_SERVICE_NAME: o nome do serviço de back-endBACKEND_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=REGIONSubstitua o seguinte:
BACKEND_SERVICE_NAME: o nome do serviço de back-endBACKEND_SERVICE_FILENAME: o nome do ficheiro YAML de configuração do serviço de back-endREGION: 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:
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 EOFCrie 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.csrAssine 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.certQuando 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 de SSL num servidor Apache com base nos certificados do servidor que criou anteriormente.-
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.keySubstitua
[...]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.certSubstitua
[...]pelo certificado do servidor com codificação PEM que criou anteriormente. -
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 ---- -
Volte a aplicar hash aos certificados da AC.
sudo c_rehash /etc/ssl/certs/ -
Reinicie o servidor Web Apache para aplicar as alterações.
sudo systemctl restart apache2.service