Configurer une entrée HTTPS

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
  1. 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 ni prometheus. Pour cet exemple, le secret est nommé myapp-https-credential.
  2. Sous servers:
    1. Ajoutez une section pour le port 443.
    2. Sous tls:, définissez credentialName sur le nom du secret que vous venez de créer.
    3. 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).
  3. 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.
  4. Pour rediriger HTTP vers HTTPS, ajoutez la valeur httpsRedirect: true sous tls 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 lorsque hosts 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