Vous pouvez sécuriser la passerelle d'entrée avec HTTPS à l'aide du protocole TLS simple, et activer les connexions HTTPS vers des pages Web spécifiques. En outre, vous pouvez rediriger les connexions HTTP vers HTTPS.
HTTPS crée un canal sécurisé sur un réseau non sécurisé, empêchant ainsi les attaques MITM ("man in the middle") et chiffrant le trafic entre le client et le serveur. Pour préparer un serveur Web à accepter des connexions HTTPS, un administrateur doit créer un certificat de clé publique pour celui-ci. Ce certificat doit être signé par une autorité de certification approuvée pour qu'un navigateur Web l'accepte sans afficher d'avertissement.
Modifiez la passerelle nommée external-gateway dans l'espace de noms kf
à l'aide de l'éditeur Kubernetes intégré :
kubectl edit gateway -n kf external-gateway
- Si vous disposez d'un certificat et d'une clé pour votre service, créez un secret Kubernetes pour la passerelle d'entrée. Assurez-vous que le nom du secret ne commence pas par
istio
niprometheus
. Pour cet exemple, le secret est nommémyapp-https-credential
. - Sous
servers:
- Ajoutez une section pour le port 443.
- Sous
tls:
, définissezcredentialName
sur le nom du secret que vous venez de créer. - Sous
hosts:
, ajoutez le nom d'hôte du service que vous souhaitez sécuriser via HTTPS. Ce paramètre peut être défini sur un domaine entier à l'aide d'un caractère générique (par exemple,*.example.com
) ou simplement réduit à un nom d'hôte (par exemple,myapp.example.com
).
- Vous devriez déjà voir une section concernant le port HTTP 80 sous
servers:
. Conservez cette section dans la définition de la passerelle si vous souhaitez que l'ensemble du trafic entre en tant que trafic HTTP. - Pour rediriger HTTP vers HTTPS, ajoutez la valeur
httpsRedirect: true
soustls
dans la section du serveur HTTP. Consultez la documentation sur la passerelle Istio pour en savoir plus. Notez que si vous ajoutez cette valeur à la section lorsquehosts
est défini sur*
, l'ensemble du trafic est redirigé vers HTTPS. Si vous souhaitez ne rediriger le trafic HTTP vers HTTPS que pour un domaine ou une application, ajoutez une section HTTP distincte qui spécifie la redirection.
Vous trouverez ci-dessous un exemple de spécification (spec
) de passerelle qui configure HTTPS pour myapp.example.com
et redirige HTTP vers HTTPS pour cet hôte :
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