Puoi proteggere il gateway in entrata con HTTPS utilizzando il protocollo TLS semplice e attivando le connessioni HTTPS a pagine web specifiche. Inoltre, puoi reindirizzare le connessioni HTTP a HTTPS.
HTTPS crea un canale protetto su una rete non sicura che protegge gli attacchi man in the middle e cripta 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 per poter essere accettato da un browser web senza preavviso.
Modifica il gateway con nome di gateway esterno nello spazio dei nomi kf
utilizzando l'editor Kubernetes integrato:
kubectl edit gateway -n kf external-gateway
- Supponendo che tu abbia 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
. In questo esempio, il secret è denominatomyapp-https-credential
. - Meno di
servers:
- Aggiungi una sezione per la porta 443.
- In
tls:
, impostacredentialName
sul nome del secret che hai appena creato. - In
hosts:
, aggiungi il nome host del servizio che vuoi proteggere con HTTPS. È possibile impostare questa impostazione su un intero dominio utilizzando un carattere jolly (ad es.*.example.com
) oppure limitare l'ambito a un solo nome host (ad es.myapp.example.com
).
- Dovrebbe esserci già una sezione in
servers:
per la porta HTTP 80. Mantieni questa sezione nella definizione del gateway se vuoi che tutto il traffico venga inviato come HTTP. - Per reindirizzare HTTP a HTTPS, aggiungi il valore
httpsRedirect: true
intls
nella sezione HTTP server. Consulta la documentazione di Istio gateway per ulteriori informazioni. Tieni presente che l'aggiunta di questa sezione nella sezione in cuihosts
è impostato su*
significa che tutto il traffico viene reindirizzato a HTTPS. Se vuoi reindirizzare HTTP a HTTPS solo per un'app/dominio singolo, 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 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