O suporte de SSL do App Engine oferece pontos finais SSL distribuídos globalmente e equilíbrio de carga incorporado para publicar a sua app de forma segura, fiável e rápida para um público-alvo mundial.
Por predefinição, as ligações HTTPS no seu domínio personalizado são ativadas automaticamente através de certificados SSL geridos. Depois de mapear um domínio personalizado para a sua aplicação e atualizar os registos DNS, o App Engine aprovisiona um certificado SSL gerido, renova o certificado e revoga-o quando remove o domínio personalizado da sua aplicação.
Antes de começar
Certifique-se de que já configurou o seu domínio personalizado no projeto do App Engine.
Se usar o Cloud Load Balancing e os NEGs sem servidor para encaminhar tráfego para a sua app do App Engine, recomendamos que mapeie o seu domínio personalizado para o balanceador de carga em vez de diretamente para a sua app e use certificados SSL criados para o balanceador de carga. Isto elimina a necessidade de gerir certificados SSL separados para cada app sem servidor. Além disso, com o Cloud Load Balancing, pode definir políticas SSL que controlam as funcionalidades de SSL que o seu balanceador de carga negoceia com os clientes. Para mais informações, consulte as seguintes páginas:
Tenha em atenção a seguinte limitação:
- Recomendamos que use controlos de entrada para que a sua app apenas receba pedidos enviados a partir do equilibrador de carga (e da VPC, se a usar). Caso contrário, os utilizadores podem usar o URL do App Engine da sua app para contornar o balanceador de carga, as políticas de segurança do Cloud Armor, os certificados SSL e as chaves privadas que são transmitidas através do balanceador de carga.
Valide um certificado gerido
Depois de configurar o seu domínio personalizado e atualizar os registos DNS, é fornecido automaticamente um certificado SSL gerido no espaço de alguns minutos. A seleção da autoridade de certificação é automática. O certificado gerido é assinado pelo Google Trust Services (GTS) ou pela Let's Encrypt.
Para verificar se o certificado foi aprovisionado:
-
Na Google Cloud consola, aceda a App Engine > Definições > Domínios personalizados:
-
A segurança SSL é apresentada como gerida pela Google.
Resolva problemas de certificados SSL geridos
Pode ter de atualizar os registos de DNS do seu domínio personalizado para validar o nome do domínio. O App Engine não pode aprovisionar certificados para domínios não validados.
Pode verificar o estado do seu certificado com a API Admin através de um AuthorizedCertificate.GET request.
Se um certificado gerido não tiver sido aprovisionado porque os registos DNS não estão disponíveis, o campo
ManagedCertificate.ManagementStatus
pode serFAILED_RETRYING_NOT_VISIBLE
. Verifique se os seus registos de DNS estão atualizados, aguarde alguns minutos e, em seguida, tente novamente. Os registos DNS podem demorar até 24 horas a ficar disponíveis.Se o estado for
FAILED_PERMANENT
, significa que todas as tentativas de renovação falharam. Verifique as definições de DNS e, em seguida, atualize o mapeamento do domínio personalizado seguindo os passos para atualizar para certificados SSL geridos.
Atualize para certificados SSL geridos
Antes de atualizar para certificados SSL geridos pela Google, tenha em atenção que os certificados geridos não suportam mapeamentos com carateres universais.
Se estiver a usar subdomínios e o certificado for emitido pela Let's Encrypt, existe um limite de 50 certificados geridos por semana para cada domínio base. Se atingir o limite, o App Engine continua a tentar emitir certificados geridos até que todos os pedidos sejam cumpridos.
Para mudar dos seus próprios certificados SSL para certificados SSL geridos pela Google ou para adicionar certificados SSL geridos a uma app existente com um domínio personalizado, atualize o mapeamento de domínios:
-
Na Google Cloud consola, aceda a App Engine > Definições > Domínios personalizados:
-
Selecione o domínio que quer proteger e clique em Ativar segurança gerida.
Desative os certificados SSL geridos
Para desativar os certificados SSL geridos:
-
Na Google Cloud consola, aceda a App Engine > Definições > Domínios personalizados:
-
Selecione o domínio e clique em Desativar segurança gerida.
Use os seus próprios certificados SSL
Em vez de usar certificados SSL geridos, pode usar o seu próprio certificado. Se o seu certificado não tiver uma prova de transparência, a sua app pode apresentar avisos SSL no Chrome devido à aplicação da prova de transparência de certificados. Para mais informações sobre as provas de Transparência de certificados e como agir em conformidade, leia o artigo Aplicação da Transparência de certificados.
Para usar e gerir os seus próprios certificados SSL em vez dos certificados geridos pela Google:
Certifique-se de que já configurou o seu domínio personalizado no seu projeto do App Engine.
Obtenha um certificado para o seu domínio junto da autoridade de certificação (AC) da sua escolha. O procedimento exato pode variar consoante a autoridade, mas consulte o artigo Obter um certificado para ver os passos típicos.
Converta os ficheiros de chave privada e certificado SSL em formatos suportados pelo App Engine. Antes de poder carregar os seus ficheiros, a chave privada tem de ser convertida numa chave privada RSA e os certificados SSL têm de ser concatenados num único ficheiro. Para mais informações, consulte o artigo Converta as suas chaves privadas e concatene os seus certificados SSL.
Certifique-se de que tem as autorizações certas na Google Cloud consola e a propriedade validada (passo 3) de todos os domínios relacionados ou dos respetivos domínios principais. Por exemplo:
- Se o certificado for para
www.example.com
, pode validar a propriedade dewww.example.com
ouexample.com
. - Se o certificado for para
www.example.com
esub.example.com
, pode validar a propriedade dewww.example.com
esub.example.com
ou deexample.com
. - Se o certificado for para
*.example.com
, tem de validar a propriedade deexample.com
.
- Se o certificado for para
Carregue a chave privada e o certificado SSL e, de seguida, mapeie o seu domínio para a sua app:
-
Na Google Cloud consola, aceda a App Engine > Definições > Certificados SSL:
-
Clique em Carregar um novo certificado.
-
Carregue o certificado SSL concatenado em
PEM encoded X.509 public key certificate
, por exemploconcat.crt
e, em seguida, carregue a chave privada RSA em Chave privada RSA codificada em PEM não encriptada, por exemplomyserver.key.pem
. - Clique em Carregar. Cada certificado SSL que carregar fica visível e disponível para utilização por todos os seus outros Google Cloud projetos, pelo que não tem de carregar o mesmo certificado repetidamente.
- Selecione o certificado que quer atribuir a um domínio e, de seguida, clique em Guardar para usar SSL para esse domínio.
-
Teste as alterações visitando o seu domínio no navegador, usando, por exemplo,
https
,https://www.example.com
.
Transfira mapeamentos de um certificado de publicação para um novo certificado
Quando um certificado se aproxima da data de validade, tem de carregar um novo certificado e transferir os mapeamentos existentes do certificado antigo para esse novo certificado. O procedimento seguinte pressupõe que o certificado existente ainda não expirou e está atualmente a servir o seu domínio personalizado.
Para transferir mapeamentos de um certificado em serviço ativo:
Obtenha um novo certificado para o seu domínio da autoridade de certificação (AC) da sua escolha. Consulte o artigo Obter um certificado para ver os passos típicos.
Converta os ficheiros de chave privada e certificado SSL em formatos suportados pelo App Engine. Para mais detalhes, consulte o artigo Converta as suas chaves privadas e concatene os seus certificados SSL.
Carregue a chave privada RSA e o certificado SSL concatenado:
-
Carregue o certificado SSL na página Certificados SSL.
Aceda a Certificados SSL-
Clique em Carregar um novo certificado.
-
Carregue o certificado SSL concatenado em Certificado de chave pública X.509 codificado em PEM, por exemplo,
concat.crt
, e, em seguida, carregue a chave privada RSA em Chave privada RSA codificada em PEM não encriptada, por exemplo,myserver.key.pem
. - Clique em Carregar.
-
- Selecione o novo certificado que acabou de adicionar na lista de certificados e, de seguida, selecione o domínio que está a ser publicado pelo certificado antigo.
- Clique em Guardar para transferir os mapeamentos do certificado antigo para o novo.
-
Obtenha um certificado
O processo de obtenção de um certificado SSL varia consoante a autoridade de certificação que usar. As instruções fornecidas aqui podem ter de ser ligeiramente ajustadas. Normalmente, cada autoridade de certificação fornece instruções para ajudar no processo.
Para obter um certificado para utilização com a sua app do App Engine:
Gere a sua chave privada e um pedido de assinatura de certificado (CSR) através da ferramenta openssl:
Execute o seguinte comando a partir de um diretório onde quer criar o ficheiro
server.csr
:openssl req -nodes -newkey rsa:2048 -keyout [MY_PRIVATE_KEY].key -out [MY_CSR].csr
where:
[MY_PRIVATE_KEY].key
é o ficheiro gerado onde a sua chave privada está armazenada. Exemplo:myserver.key
[MY_CSR].csr
é o ficheiro gerado para o seu pedido de assinatura de certificado. Exemplo:server.csr
Quando lhe for pedido, introduza as seguintes informações:
- O código do país de 2 dígitos, por exemplo,
US
para os Estados Unidos. - O nome da sua cidade.
- O nome da sua empresa. Pode usar o seu próprio nome se não tiver uma empresa.
- A sua unidade organizacional ou
NA
se não tiver esta opção. - Um nome comum que representa o seu domínio, por exemplo:
www.example.com
- O seu endereço de email.
Não precisa de fornecer nenhum dos outros valores, pois são todos opcionais.
- O código do país de 2 dígitos, por exemplo,
Determine que autoridade de certificação é adequada para si e, em seguida, compre um certificado. Por exemplo, pode usar: SSLMate, Thawte, Comodo ou qualquer outra autoridade de certificação.
Para ver detalhes sobre os tipos de certificados suportados, consulte o artigo Suporte do App Engine para certificados SSL.
Quando a sua AC solicitar o conteúdo do ficheiro CSR, siga as instruções para copiar e colar o conteúdo do ficheiro
.csr
que gerou anteriormente, por exemplo,server.csr
.Siga as instruções quando a AC pedir a aprovação do proprietário do domínio.
Depois de fornecer a aprovação do proprietário do domínio, a AC envia-lhe o certificado, que é normalmente um ficheiro ZIP. Descompacte esse ficheiro para um diretório de trabalho para poder concatenar esses certificados para carregamento no App Engine.
Converta chaves privadas e concatene certificados SSL
Tem de converter a sua chave privada numa chave privada RSA e concatenar todos os seus certificados SSL antes de carregar a chave privada e os certificados SSL para o App Engine.
Converta o ficheiro de chave privada que gerou anteriormente numa chave privada RSA não encriptada. Por exemplo, pode executar o seguinte comando
openssl rsa
:openssl rsa -in [MY_PRIVATE_KEY].key -out [MY_RSA_KEY].key.pem
where:
[MY_PRIVATE_KEY].key
é o ficheiro gerado que contém a sua chave privada armazenada. Exemplo:myserver.key
[MY_RSA_KEY].key
é o ficheiro gerado que contém a chave privada RSA não encriptada. Exemplo:myserver.key.pem
Exemplo:
openssl rsa -in myserver.key -out myserver.key.pem
Concatene todos os ficheiros
.crt
da sua AC num único ficheiro através do seguinte comando:cat [MY_DOMAIN_CERT].crt [MY_SecureServerCA].crt [MY_TrustCA].crt [MY_TrustExternalCARoot].crt > [MY_CONCAT_CERT].crt
onde
- O
[MY_DOMAIN_CERT].crt
é o certificado para o seu domínio. Exemplo:www_example_com.crt
[MY_SecureServerCA].crt
,[MY_TrustCA].crt
e[MY_TrustExternalCARoot].crt
são os outros ficheiros de certificado fornecidos pela CA.[MY_CONCAT_CERT].crt
é o ficheiro concatenado que contém todos os ficheiros de certificado.crt
da sua CA. Exemplo:concat.crt
Exemplo:
cat www_example_com.crt AddTrustExternalCARoot.crt RSADomainValidationSecureServerCA.crt RSAAddTrustCA.crt > concat.crt
- O
Valide o seu certificado SSL e chave privada:
Para verificar se a chave privada e o certificado correspondem, pode usar os comandos
openssl x509
eopenssl rsa
. Exemplos:openssl x509 -noout -modulus -in concat.crt | openssl md5 openssl rsa -noout -modulus -in myserver.key.pem | openssl md5
Os comandos openssl x509 e openssl rsa devem devolver a mesma saída.
Para verificar se um certificado e a respetiva cadeia de AC são válidos, pode usar o comando openssl verify. Por exemplo:
openssl verify -verbose -CAfile concat.crt concat.crt
Quando tiver tudo pronto, pode carregar a chave privada RSA e os certificados concatenados para o App Engine.
Suporte do App Engine para certificados SSL
O App Engine suporta os seguintes tipos de certificados:
- Domínio/nome do anfitrião único
- Autoassinado
- Caráter universal
- Nome alternativo do requerente (SAN) / vários domínios
Requer algumas coisas dos seus certificados e chaves:
- A chave privada e o certificado devem ser carregados no formato PEM.
- As chaves privadas não podem ser encriptadas.
- Um ficheiro de certificado pode conter, no máximo, cinco certificados. Este número inclui certificados encadeados e intermédios.
- Todos os nomes de assunto no certificado de anfitrião devem corresponder ou ser subdomínios dos domínios validados do utilizador.
- As chaves privadas têm de usar encriptação RSA.
- Módulo da chave máximo permitido: 2048 bits
Se o certificado de anfitrião exigir um certificado intermédio ou encadeado, como emitem muitas autoridades de certificação (ACs), tem de anexar os certificados intermédios ou encadeados ao final do ficheiro de certificado público.
Algumas funcionalidades do App Engine usam subdomínios especiais. Por exemplo, uma aplicação pode usar subdomínios para aceder a serviços de aplicações ou a diferentes versões da sua aplicação. Para os usar com SSL, é sensato configurar um certificado SAN ou de caráter universal. Os certificados com carateres universais só suportam um nível de subdomínio.
Remova certificados SSL personalizados
Para deixar de usar um certificado SSL personalizado, siga estes passos:
Na Google Cloud consola, aceda à página Definições de certificados SSL do App Engine.
Clique no certificado que quer remover do seu domínio.
Desmarque o nome do domínio para o qual já não quer usar o certificado SSL e, de seguida, clique em Guardar.
Use cabeçalhos Strict-Transport-Security
Por motivos de segurança, todas as aplicações devem incentivar os clientes a usar ligações https
. Para instruir o navegador a preferir https
em vez de http
,
use o cabeçalho Strict-Transport-Security
.
Veja as cifras e as versões do TLS ativadas
Instale o
nmap
Network Mapper no seu computador, se ainda não estiver disponível. Consulte https://nmap.org/ para ver as instruções de instalação.Para ver que versões de TLS e cifras estão ativadas para a sua app, introduza o seguinte comando:
nmap -sV --script ssl-enum-ciphers -p 443 HOSTNAME
Substitua
HOSTNAME
pelo nome de anfitrião da sua app. Pode usar o seu domínio personalizado ou o nome de anfitriãoappspot.com
que o App Engine criou para a sua app. Por exemplo:nmap -sV --script ssl-enum-ciphers -p 443 example.uc.r.appspot.com
Desative as versões e as cifras do TLS
Se usar o Cloud Load Balancing e os NEGs sem servidor para encaminhar tráfego para a sua app do App Engine, pode desativar uma versão ou uma cifra do TLS definindo uma política de segurança SSL que especifica que versões e cifras do TLS podem ser usadas para ligações HTTPS ou SSL.