Usar certificados TLS geridos e HTTPS

Esta página mostra como desativar e reativar a funcionalidade de certificados TLS geridos que fornece e renova automaticamente certificados TLS para suportar ligações HTTPS no Knative Serving.

Se quiser usar HTTPS:

  • O seu contentor deve continuar a ouvir em $PORT
  • Tem de escolher como está a fornecer certificados TLS:

  • Se estiver a usar certificados geridos, também tem de mapear o seu domínio personalizado para usar a funcionalidade de certificados geridos.

Usar HTTPS e HTTP

Por predefinição, se usar certificados geridos, os clusters ou os serviços Knative serving com certificados geridos são expostos ao tráfego HTTP e HTTPS. Se quiser apenas tráfego HTTPS, pode ativar os redirecionamentos HTTPS para forçar todo o tráfego a usar apenas HTTPS.

Resolução de problemas

Se tiver problemas ao usar certificados TLS geridos, consulte a página de resolução de problemas de TLS gerido.

Limitações

As seguintes considerações aplicam-se à utilização da funcionalidade de certificados TLS geridos:

  • Os certificados TLS geridos estão desativados e não são suportados para clusters privados do Knative Serving no Google Cloud.
  • Para usar a funcionalidade de certificados geridos, o seu serviço tem de estar exposto externamente: não pode ser um serviço local do cluster nem um serviço exposto pela nuvem privada virtual.
  • A funcionalidade de certificados geridos só funciona com a Cloud Service Mesh. O suplemento Istio ou outras configurações do Istio não são suportados.
  • Esta funcionalidade usa o Let's Encrypt, que tem um limite de quota inicial de 50 certificados TLS por semana por domínio registado. Pode pedir um aumento da quota seguindo a documentação do Let's Encrypt.
  • Quando executa um cluster de publicação do Knative noutras plataformas, como no local ou na AWS, esta funcionalidade está desativada. Para usar esta funcionalidade, tem de se certificar de que o seu cluster consegue aceder ao Let's Encrypt e que o serviço de entrada do Cloud Service Mesh está exposto à Internet pública.

Antes de começar

As instruções nesta página pressupõem o seguinte:

Desativar certificados TLS geridos e HTTPS para um cluster inteiro

Desative o TLS gerido para um cluster atualizando o ConfigMap config-domainmapping:

kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Disabled"}}'

Desativar o TLS e o HTTPS geridos para um mapeamento de domínio específico

Se necessário, pode desativar o TLS gerido para um mapeamento de domínio específico:

  1. Adicione a anotação domains.cloudrun.com/disableAutoTLS: "true"`:

    kubectl annotate domainmappings DOMAIN domains.cloudrun.com/disableAutoTLS=true
  2. Verifique se o HTTPS não funciona:

    curl https://DOMAIN

  3. Verifique se o HTTP está a ser usado para o serviço:

    gcloud run domain-mappings describe --domain DOMAIN

    Substitua DOMAIN pelo seu próprio nome de domínio, por exemplo: your-domain.com

    Verifique o campo url: no resultado do comando acima: o URL deve ter http e não https.

Reativar os certificados TLS geridos e o HTTPS

Para reativar o TLS gerido:

  1. Se ainda não o fez, crie um mapeamento de domínio para o seu serviço e atualize o seu registo de DNS em conformidade com as instruções na página de mapeamento de domínios.

  2. Ative os certificados TLS geridos e o HTTPS atualizando o ConfigMap config-domainmapping:

    kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Enabled"}}'
  3. Aguarde alguns minutos após o comando ser bem-sucedido e, em seguida, certifique-se de que a funcionalidade de certificados está a funcionar:

    kubectl get kcert

    Se o certificado estiver pronto, deve ver uma mensagem semelhante a esta:

    NAME              READY   REASON
    your-domain.com              True

    O Kcert pode demorar entre 20 segundos e 2 minutos a ficar pronto. Se tiver problemas, consulte as instruções de resolução de problemas desta funcionalidade.

Validação com êxito

  1. Verifique se o registo de DNS entrou em vigor executando o comando:

    gcloud run domain-mappings describe --domain DOMAIN

    Substitua DOMAIN pelo seu próprio nome de domínio, por exemplo: your-domain.com

  2. Verifique o campo url: no resultado do comando acima: o URL deve ter https e não http.

  3. Verifique o endereço IP do comando acima, indicado em resourceRecords:rrdata, e compare-o com o valor apresentado quando executa o comando host DOMAIN. Devem ser iguais.

Ativar redirecionamentos HTTPS para o Knative Serving

Se usar a funcionalidade de certificados TLS geridos, por predefinição, o cluster é exposto ao tráfego HTTP e HTTPS por motivos de compatibilidade com versões anteriores. Se quiser forçar todo o tráfego a usar apenas HTTPS, pode ativar os redirecionamentos HTTPS para um mapeamento de domínio existente invocando o comando

kubectl annotate domainmappings DOMAIN domains.cloudrun.com/httpsRedirect=Enabled

em que DOMAIN é o nome do mapeamento de domínios.