Resolva problemas de certificados SSL

Os procedimentos de resolução de problemas dependem do tipo de certificados SSL usados.

Resolva problemas com certificados geridos pela Google

Para certificados geridos pela Google, existem dois tipos de estado:

  • Estado gerido
  • Estado do domínio

Estado gerido

Para verificar o estado do certificado, execute o seguinte comando:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --global \
    --format="get(name,managed.status)"

Os valores de estado de gestão são os seguintes:

Estado gerido Explicação
PROVISIONING

O certificado gerido pela Google foi criado e Google Cloud está a funcionar com a autoridade de certificação para o assinar.

O aprovisionamento de um certificado gerido pela Google pode demorar até 60 minutos a partir do momento em que as alterações à configuração do DNS e do balanceador de carga se propagaram pela Internet. Se atualizou recentemente a configuração de DNS, as alterações podem demorar um período significativo a serem totalmente propagadas. Por vezes, a propagação demora até 72 horas a nível mundial, embora, normalmente, demore algumas horas. Para mais informações sobre a propagação de DNS, consulte o artigo Propagação de alterações.

Se o certificado permanecer no estado PROVISIONING, certifique-se de que o certificado correto está associado ao proxy de destino. Pode verificar isto executando o comando gcloud compute target-https-proxies describe ou o comando gcloud compute target-ssl-proxies describe.

ACTIVE O certificado SSL gerido pela Google é obtido junto da autoridade de certificação. Pode demorar 30 minutos adicionais a ficar disponível para utilização por um equilibrador de carga.
PROVISIONING_FAILED Pode ver brevemente PROVISIONING_FAILED, mesmo quando o seu certificado está realmente ACTIVE. Verifique novamente o estado.

Se o estado permanecer PROVISIONING_FAILED, o certificado gerido pela Google foi criado, mas a autoridade de certificação não o consegue assinar. Certifique-se de que concluiu todos os passos em Usar certificados SSL geridos pela Google.

Google Cloud retries provisioning until successful or the status changes to PROVISIONING_FAILED_PERMANENTLY.
PROVISIONING_FAILED_PERMANENTLY O certificado gerido pela Google é criado, mas a autoridade de certificação não o consegue assinar devido a um problema de configuração do DNS ou do equilibrador de carga. Neste estado, Google Cloud não tenta novamente o aprovisionamento.

Crie um certificado SSL gerido pela Google de substituição e certifique-se de que a substituição está associada ao proxy de destino do seu equilibrador de carga. Valide ou conclua todos os passos em Usar certificados SSL geridos pela Google. Posteriormente, pode eliminar o certificado cujo aprovisionamento falhou permanentemente.
RENEWAL_FAILED

A renovação do certificado gerido pela Google falhou devido a um problema com o balanceador de carga ou a configuração de DNS. Se algum dos domínios ou subdomínios num certificado gerido não estiver a apontar para o endereço IP do balanceador de carga através de um registo A/AAAA, o processo de renovação falha. O certificado existente continua a ser publicado, mas expira em breve. Verifique a sua configuração.

Se o estado permanecer RENEWAL_FAILED, aprovisione um novo certificado, mude para a utilização do novo certificado e elimine o certificado anterior.

Para mais informações sobre a renovação de certificados, consulte o artigo Renovação de certificados SSL geridos pela Google.

Estado do domínio

Para verificar o estado do domínio, execute o seguinte comando:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --global \
    --format="get(managed.domainStatus)"

Os valores do estado do domínio são descritos nesta tabela.

Estado do domínio Explicação
PROVISIONING O certificado gerido pela Google é criado para o domínio. Google Cloud está a trabalhar com a Autoridade de certificação para assinar o certificado.
ACTIVE O domínio foi validado com êxito para o aprovisionamento do certificado. Se o certificado SSL for para vários domínios, o certificado só pode ser aprovisionado quando todos os domínios tiverem o estado ACTIVE e o estado gerido do certificado também for ACTIVE.
FAILED_NOT_VISIBLE

O aprovisionamento de certificados não foi concluído para o domínio. Qualquer uma das seguintes opções pode ser o problema:

  • O registo DNS do domínio não é resolvido para o endereço IP do Google Cloud equilibrador de carga. Para resolver este problema, atualize os registos DNS A e AAAA para apontarem para o endereço IP do seu equilibrador de carga.

    O DNS não pode ser resolvido para nenhum outro endereço IP que não seja o do balanceador de carga. Por exemplo, se um registo A for resolvido para o equilibrador de carga correto, mas o registo AAAA for resolvido para outra coisa, o estado do domínio é FAILED_NOT_VISIBLE.

  • Os registos A e AAAA de DNS atualizados recentemente podem demorar um período significativo a serem totalmente propagados. Por vezes, a propagação na Internet demora até 72 horas a nível mundial, embora normalmente demore algumas horas. O estado do domínio continua a ser FAILED_NOT_VISIBLE até a propagação estar concluída.
  • O certificado SSL não está associado ao proxy de destino do equilibrador de carga. Para resolver este problema, atualize a configuração do equilibrador de carga.
  • As portas de front-end da regra de encaminhamento não incluem a porta 443 para nenhum balanceador de carga com um proxy HTTP(S)/SSL. Pode resolver este problema adicionando uma nova regra de encaminhamento com a porta 443.
  • Um mapa de certificados do Gestor de certificados está anexado ao proxy de destino. O mapeamento de certificados anexado tem precedência e os certificados anexados diretamente são ignorados. Isto pode ser resolvido desassociando o mapa de certificados do proxy.
  • Se o estado gerido for PROVISIONING, Google Cloud continua a tentar o aprovisionamento, mesmo que o estado do domínio seja FAILED_NOT_VISIBLE.
FAILED_CAA_CHECKING O aprovisionamento do certificado falhou devido a um problema de configuração com o registo CAA do seu domínio. Certifique-se de que seguiu o procedimento correto.
FAILED_CAA_FORBIDDEN O aprovisionamento do certificado falhou porque o registo CAA do seu domínio não especifica uma CA que o Google Cloud tem de usar. Google Cloud Certifique-se de que seguiu o procedimento correto.
FAILED_RATE_LIMITED O aprovisionamento de certificados falhou porque uma autoridade de certificação limitou a taxa de pedidos de assinatura de certificados. Pode aprovisionar um novo certificado, mudar para a utilização do novo certificado e eliminar o certificado anterior ou pode contactar o Google Cloud apoio técnico.

Renovação de certificado gerido

Para ajudar a garantir que os seus certificados não falham o passo de validação do domínio do processo de renovação, reveja os requisitos para os registos A e AAAA do seu DNS.

Validação de domínio com várias perspetivas

Google Cloud renova periodicamente os seus certificados geridos pela Google pedindo-os às autoridades de certificação (ACs). As ACs com as quais Google Cloud trabalha para renovar os seus certificados usam um método de validação de domínio de várias perspetivas conhecido como Multi-Perspective Issuance Corroboration (MPIC). Como parte deste processo, as autoridades de certificação validam o controlo do domínio verificando as definições de DNS do domínio e tentando contactar o servidor atrás do endereço IP do domínio. Estas validações são realizadas a partir de vários pontos de vista na Internet. Se o processo de validação falhar, os certificados geridos pela Google não são renovados. Consequentemente, o seu equilibrador de carga apresenta um certificado expirado aos clientes, o que faz com que os utilizadores do navegador encontrem erros de certificado e os clientes da API tenham falhas de ligação.

Para evitar falhas de validação de domínio com várias perspetivas devido a registos de DNS configurados incorretamente, tenha em atenção o seguinte:

  • Os seus registos A de DNS (IPv4) e registos AAAA de DNS (IPv6) para os seus domínios e subdomínios apontam apenas para o endereço IP (ou endereços) associado à regra (ou regras) de encaminhamento do balanceador de carga. A existência de outros endereços no registo pode fazer com que a validação falhe.
  • A AC, que realiza a validação de registos DNS, consulta registos DNS a partir de várias localizações. Certifique-se de que o seu fornecedor de DNS responde de forma consistente a todos os pedidos de validação de domínio global.
  • A utilização de GeoDNS (devolver diferentes endereços IP com base na localização do pedido) ou políticas de DNS baseadas na localização pode originar respostas inconsistentes e fazer com que a validação falhe. Se o seu fornecedor de DNS usar o GeoDNS, desative-o ou certifique-se de que todas as regiões devolvem o endereço IP do balanceador de carga.
  • Tem de especificar explicitamente os endereços IP do seu equilibrador de carga na configuração de DNS. As camadas intermédias, como uma RFC, podem causar um comportamento imprevisível. O endereço IP tem de estar diretamente acessível sem redirecionamentos, firewalls ou CDNs no caminho do pedido. Para saber mais, consulte a secção Equilibradores de carga atrás de uma RFC neste documento.
  • Recomendamos que use um verificador de propagação global de DNS à sua escolha para verificar se todos os registos de DNS relevantes são resolvidos corretamente e de forma consistente em todo o mundo.

Valide as alterações de configuração

Depois de configurar os Registos de DNS, pode verificar se estão corretos criando um novo certificado e associando-o ao equilibrador de carga juntamente com o certificado existente. Este passo força uma verificação imediata do aprovisionamento de certificados junto da AC, o que lhe permite validar as alterações de configuração em poucos minutos. Sem esta opção, as renovações automáticas do certificado existente podem demorar dias ou semanas, o que gera incerteza acerca da sua configuração.

Se o estado do certificado se tornar ACTIVE, indica que o certificado foi emitido, confirmando assim que a sua configuração de DNS está correta. Neste ponto, recomendamos que remova o certificado anterior para evitar ter dois certificados separados para o mesmo domínio. Este processo não interrompe o tráfego para o equilibrador de carga.

O novo certificado serve como ferramenta de validação. A sua criação confirma que a validação de domínio com várias perspetivas através do MPIC funciona corretamente para a sua configuração.

Balanceadores de carga atrás de uma RFC

Para balanceadores de carga com a RFC ativada, alguns fornecedores de RFC de terceiros no caminho do pedido podem impedir que os pedidos de validação sejam bem-sucedidos. Isto pode acontecer se o fornecedor de RFC estiver a usar ativamente um proxy para o tráfego HTTP(S).

Nestes casos, recomendamos que migre os seus certificados para o Gestor de certificados e use o método de autorização de DNS para aprovisionar certificados geridos pela Google. A última abordagem não requer que a AC contacte o seu equilibrador de carga.

Resolva problemas de certificados SSL autogeridos

Este guia descreve como resolver problemas de configuração de certificados SSL autogeridos.

Não é possível analisar o certificado

Google Cloud requer certificados no formato PEM. Se o certificado estiver no formato PEM, verifique o seguinte:

Pode validar o seu certificado através do seguinte comando OpenSSL, substituindo CERTIFICATE_FILE pelo caminho para o ficheiro do certificado:

openssl x509 -in CERTIFICATE_FILE -text -noout

Se o OpenSSL não conseguir analisar o seu certificado:

Nome comum ou nome alternativo do assunto em falta

Google Cloud requer que o seu certificado tenha um nome comum (CN) ou um atributo de nome alternativo do requerente (SAN). Consulte o artigo Crie um CSR para mais informações.

Quando ambos os atributos estão ausentes, Google Cloud é apresentada uma mensagem de erro semelhante à seguinte quando tenta criar um certificado autogerido:

ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
 -   The SSL certificate is missing a Common Name(CN) or Subject Alternative
   Name(SAN).

Não é possível analisar a chave privada

Google Cloud requer chaves privadas no formato PEM que cumpram os critérios da chave privada.

Pode validar a sua chave privada através do seguinte comando OpenSSL, substituindo PRIVATE_KEY_FILE pelo caminho para a sua chave privada:

    openssl rsa -in PRIVATE_KEY_FILE -check

As seguintes respostas indicam um problema com a sua chave privada:

  • unable to load Private Key
  • Expecting: ANY PRIVATE KEY
  • RSA key error: n does not equal p q
  • RSA key error: d e not congruent to 1
  • RSA key error: dmp1 not congruent to d
  • RSA key error: dmq1 not congruent to d
  • RSA key error: iqmp not inverse of q

Para corrigir o problema, tem de criar uma nova chave privada e um certificado.

Chaves privadas com frases de acesso

Se o OpenSSL pedir uma frase de acesso, tem de remover a frase de acesso da chave privada antes de a poder usar com o Google Cloud. Pode usar o seguinte comando OpenSSL:

openssl rsa -in PRIVATE_KEY_FILE \
    -out REPLACEMENT_PRIVATE_KEY_FILE

Substitua os marcadores de posição por valores válidos:

  • PRIVATE_KEY_FILE: o caminho para a sua chave privada que está protegida com uma expressão secreta
  • REPLACEMENT_PRIVATE_KEY_FILE: o caminho onde quer guardar uma cópia da sua chave privada de texto simples

Certificados intermédios em vias de expirar

Se um certificado intermédio expirar antes do certificado do servidor (folha), isto pode indicar que a sua AC não está a seguir as práticas recomendadas.

Quando um certificado intermédio expira, o seu certificado final usado em Google Cloud pode tornar-se inválido. Isto depende do cliente SSL, da seguinte forma:

  • Alguns clientes SSL apenas consideram a hora de expiração do certificado final e ignoram os certificados intermédios expirados.
  • Alguns clientes SSL tratam uma cadeia com certificados intermédios expirados como inválida e apresentam um aviso.

Para resolver este problema:

  1. Aguarde que a CA mude para um novo certificado intermédio.
  2. Peça-lhes um novo certificado.
  3. Volte a carregar o novo certificado com as novas chaves.

A AC também pode permitir a assinatura cruzada para certificados intermédios. Consulte a sua AC para confirmar.

O expoente público RSA é demasiado grande

A seguinte mensagem de erro é apresentada quando o expoente público RSA é superior a 65537. Certifique-se de que usa 65537, conforme especificado no RFC 4871.

ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
 -   The RSA public exponent is too large.

Remova o certificado SSL do target-proxy

Os passos seguintes demonstram como remover um único certificado SSL anexado ao proxy https de destino:

  1. Exporte o target-https-proxy para um ficheiro temporário.

    gcloud compute target-https-proxies export TARGET_PROXY_NAME > /tmp/proxy
    
  2. Edite o ficheiro /tmp/proxy e remova as seguintes linhas:

    sslCertificates:
    -   https://www.googleapis.com/compute/v1/projects/...
    
  3. Importe o ficheiro /tmp/proxy.

    gcloud compute target-https-proxies import TARGET_PROXY_NAME \
       --source=/tmp/proxy
    
  4. Opcional: elimine o certificado SSL.

    gcloud compute ssl-certificates delete SSL_CERT_NAME
    

Substitua o seguinte:

  • TARGET_PROXY_NAME: o nome do recurso de proxy https de destino.
  • SSL_CERT_NAME: o nome do certificado SSL.