É possível usar o TLS simples para proteger o gateway de entrada com HTTPS e ativar conexões HTTPS para páginas da Web específicas. Também é possível redirecionar conexões HTTP para HTTPS.
O HTTPS cria um canal seguro em uma rede não segura, protegendo contra ataques intermediários e criptografando o tráfego entre o cliente e o servidor. Para preparar um servidor da Web para aceitar conexões HTTPS, um administrador precisa criar um certificado de chave pública para o servidor. O certificado precisa ser assinado por uma autoridade de certificação confiável para que um navegador da Web aceite-o sem emitir avisos.
Edite o gateway chamado external-gateway no namespace kf
usando o editor integrado do Kubernetes:
kubectl edit gateway -n kf external-gateway
- Pressupondo que você tem um certificado e uma chave para o serviço, crie um secret do Kubernetes para o gateway de entrada. Verifique se o nome do secret não começa com
istio
ouprometheus
. Neste exemplo, o secret é chamado demyapp-https-credential
. - Em
servers:
- Adicione uma seção para a porta 443.
- Em
tls:
, definacredentialName
como o nome do secret que você acabou de criar. - Em
hosts:
, adicione o nome do host do serviço que você quer proteger com HTTPS. Isso pode ser definido como todo o domínio usando um caractere curinga (por exemplo,*.example.com
) ou com escopo definido apenas para um nome de host (por exemplo,myapp.example.com
).
- É necessário que já exista uma seção em
servers:
para a porta 80 HTTP. Mantenha essa seção na definição do gateway se quiser que todo o tráfego entre como HTTP. - Para redirecionar HTTP para HTTPS, adicione o valor
httpsRedirect: true
emtls
na seção do servidor HTTP. Consulte a documentação do gateway do Istio para referência. A adição na seção em quehosts
é definido como*
significa que todo o tráfego é redirecionado para HTTPS. Se quiser redirecionar o HTTP para HTTPS em um único app/domínio, adicione uma seção HTTP separada para especificá-lo.
Veja abaixo um exemplo de um gateway spec
que configura HTTPS para myapp.example.com
e redireciona HTTP para HTTPS para esse host:
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- myapp.example.com
port:
name: https
number: 443
protocol: HTTPS
tls:
credentialName: myapp-https-credential
mode: SIMPLE
- hosts:
- myapp.example.com
port:
name: http-my-app
number: 80
protocol: HTTP
tls:
httpsRedirect: true
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP