Puoi proteggere il gateway in entrata con HTTPS utilizzando TLS semplice e attivare le connessioni HTTPS a pagine web specifiche. Inoltre, puoi reindirizzare le connessioni HTTP a HTTPS.
HTTPS crea un canale sicuro su una rete non sicura, proteggendo dagli attacchi man-in-the-middle e criptando il traffico tra il client e il server. Per preparare un server web ad accettare connessioni HTTPS, un amministratore deve creare un certificato di chiave pubblica per il server. Questo certificato deve essere firmato da un'autorità di certificazione attendibile affinché un browser web possa accettarlo senza preavviso.
Modifica il gateway denominato external-gateway nello spazio dei nomi kf
utilizzando l'editor Kubernetes integrato:
kubectl edit gateway -n kf external-gateway
- Supponendo di avere un certificato e una chiave per il tuo servizio, crea un secret Kubernetes per il gateway in entrata. Assicurati che il nome del secret non inizi con
istio
oprometheus
. Per questo esempio, il secret si chiamamyapp-https-credential
. - Inferiore a
servers:
- Aggiungi una sezione per la porta 443.
- In
tls:
, impostacredentialName
sul nome del secret appena creato. - In
hosts:
, aggiungi il nome host del servizio che vuoi proteggere con HTTPS. Può essere impostato su un intero dominio utilizzando un carattere jolly (ad esempio*.example.com
) o può essere limitato a un solo nome host (ad esempiomyapp.example.com
).
- Dovrebbe già essere presente una sezione sotto
servers:
per la porta 80 HTTP. Mantieni questa sezione nella definizione del gateway se vuoi che tutto il traffico venga inviato come HTTP. - Per reindirizzare HTTP ad HTTPS, aggiungi il valore
httpsRedirect: true
intls
nella sezione del server HTTP. Come riferimento, consulta la documentazione di Istio Gateway. Tieni presente che se aggiungi questo parametro nella sezione in cuihosts
è impostato su*
, tutto il traffico viene reindirizzato a HTTPS. Se vuoi reindirizzare solo da HTTP a HTTPS per una singola app/un singolo dominio, aggiungi una sezione HTTP separata che specifichi il reindirizzamento.
Di seguito è riportato un esempio di gateway spec
che configura HTTPS per myapp.example.com
e reindirizza da HTTP a HTTPS per l'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