Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Configurer un certificat HTTPS

Dernière mise à jour :Aug 27, 2026

La configuration d'un certificat HTTPS permet d'activer le chiffrement Transport Layer Security (TLS)/Secure Sockets Layer (SSL) pour les services déployés sur une passerelle MSE Ingress. Cette étape est essentielle pour sécuriser les données des applications web modernes et des services API. Un certificat HTTPS garantit le chiffrement des données transmises entre les clients et la passerelle, empêchant ainsi toute partie non autorisée de voler ou de falsifier des informations sensibles. Il offre également une protection robuste contre les attaques de type « man-in-the-middle ».

Prérequis

Méthodes de configuration

Une passerelle MSE Ingress prend en charge deux méthodes pour configurer un certificat HTTPS : l'utilisation d'un Kubernetes Secret ou l'utilisation de la console MSE.

Élément

Kubernetes Secret

Console MSE

Cas d'utilisation

  • Gestion déclarative des certificats.

  • Automatisation de la gestion des certificats avec des pipelines CI/CD ou des outils tels que cert-manager.

  • Gestion centralisée des certificats depuis la console Certificate Management Service.

  • Application d'un seul certificat à plusieurs produits cloud, tels que Web Application Firewall (WAF) et Server Load Balancer (SLB).

  • Déploiement ou remplacement de certificats par lots.

Priorité

Faible

Élevée

Inter-namespace

Non pris en charge.

Pris en charge.

Mise à jour du certificat

Remplacement du contenu du Kubernetes Secret.

Remplacement du certificat depuis la console MSE ou déploiement d'un nouveau certificat depuis la console Certificate Management Service.

Déployer le service backend

  1. Connectez-vous à la console Container Service for Kubernetes (ACK). Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster cible. Dans le volet de navigation de gauche, accédez à Workloads > Deployments.

  3. Sur la page Deployments, cliquez sur Create from YAML. Utilisez le fichier YAML suivant pour déployer un déploiement httpbin et un service httpbin.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: httpbin
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: httpbin
      template:
        metadata:
          labels:
            app: httpbin
            version: v1
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/mse-ingress/go-httpbin
              args:
                - "--version=v1"
              imagePullPolicy: Always
              name: httpbin
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: httpbin
      namespace: default
    spec:
      ports:
        - port: 8080
          protocol: TCP
      selector:
        app: httpbin

Configurer le certificat HTTPS

Kubernetes Secret

Vous pouvez configurer un certificat HTTPS pour un domaine en référençant un Kubernetes Secret à l'aide de la sémantique Ingress native.

  1. Préparez un certificat de domaine. Cet exemple utilise un certificat auto-signé.

    Remarque

    Pour les environnements de production, vous devez utiliser une clé privée et un certificat réels pour votre activité. Vous pouvez télécharger la clé et le certificat de votre domaine depuis la console Certificate Management Service.

    1. Exécutez la commande suivante pour générer un fichier de certificat tls.crt et un fichier de clé privée tls.key.

      openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=foo.bar.com/O=foo.bar.com"
    2. Créez un Secret pour stocker le certificat TLS.

      1. Connectez-vous à la console Container Service for Kubernetes (ACK). Dans le volet de navigation de gauche, cliquez sur Clusters.

      2. Sur la page Clusters, cliquez sur le nom de votre cluster cible. Dans le volet de navigation de gauche, accédez à Configurations > Secrets.

      3. Cliquez sur Create. Dans le panneau Create, définissez le champ Name sur tls-test, sélectionnez Type comme TLS Certificate, copiez le contenu des fichiers tls.crt et tls.key créés dans les zones de saisie correspondantes, puis cliquez sur Create.

  2. Créez un MSE Ingress et configurez le certificat HTTPS pour le domaine foo.bar.com.

    1. Dans le volet de navigation de gauche, accédez à Network > Ingresses.

    2. Sur la page Ingresses, cliquez sur Create Ingress. Dans la boîte de dialogue Create Ingress, configurez la route.

      Paramètre

      Description

      Exemple

      Type de passerelle

      Sélectionnez MSE Ingress. Pour une comparaison des différents types de passerelles, consultez la rubrique Comparaison de Nginx Ingress, ALB Ingress, APIG Ingress et MSE Ingress.

      MSE Ingress

      Name

      Saisissez un nom personnalisé pour l'Ingress.

      test

      IngressClass

      Sélectionnez la classe de ressource appropriée.

      mse

      Règle

      Cliquez sur + Add Rule pour ajouter des règles de routage.

      • Nom de domaine : Un nom de domaine personnalisé.

      • Mappage de chemin : Configurez les paramètres suivants.

        • Chemin : Le chemin URL permettant d'accéder au service.

        • Règle de correspondance :

          • Prefix (correspondance basée sur le préfixe) : Correspond au préfixe du chemin URL de la requête.

          • Exact (correspondance exacte) : Correspond exactement au chemin URL de la requête.

          • Default (spécifique à l'implémentation) : Le comportement est déterminé par la logique spécifique du contrôleur Ingress.

          Pour plus d'informations, consultez la rubrique Fonctionnalités avancées des ALB Ingresses.

        • Service : Le service Kubernetes cible.

        • Port : Le port à exposer pour le service.

      • L'Ingress prend en charge plusieurs chemins sous le même nom de domaine. Cliquez sur + Add Path pour ajouter d'autres chemins.

      • Nom de domaine : foo.bar.com

      • Mappage de chemin :

        • Chemin : /

        • Règle de correspondance : Prefix (correspondance basée sur le préfixe)

        • Service : httpbin

        • Port : 8080

      Configuration TLS

      Activez TLS pour configurer un service de routage sécurisé.

      • Nom de domaine : Un nom de domaine personnalisé.

      • Secret : Sélectionnez le Secret approprié.

        Remarque

        Laisser ce champ vide active la découverte automatique des certificats.

        Pour créer un nouveau Secret :

        1. À droite du champ Secret, cliquez sur Create.

        2. Dans la boîte de dialogue Create Secret, spécifiez un Name, Cert et Key pour le Secret, puis cliquez sur OK.

        3. Dans la liste déroulante Secret, sélectionnez le Secret que vous avez créé.

      Cliquez sur + Add TLS Configuration pour configurer plusieurs paramètres TLS.

      • Nom de domaine : foo.bar.com

      • Secret : tls-test

    3. Conservez les valeurs par défaut pour les autres paramètres et cliquez sur OK sur la page Create Ingress.

  3. Testez le trafic HTTPS. Exécutez la commande suivante en remplaçant x.x.x.x par l'adresse IP réelle de votre passerelle. Vous pouvez trouver l'adresse IP de la passerelle sur la page de liste des Ingresses.

    Remarque

    Cet exemple utilise un certificat auto-signé et un domaine qui n'est pas enregistré auprès d'un fournisseur DNS. Par conséquent, vous devez utiliser l'indicateur --resolve pour résoudre manuellement le nom de domaine vers l'adresse IP de la passerelle et l'indicateur -k pour ignorer la validation du certificat.

    curl -v -k https://foo.bar.com/version --resolve "foo.bar.com:443:x.x.x.x"

    Le résultat attendu est le suivant :

    * Connected to foo.bar.com (X.X.X.X) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    *   CAfile: /etc/ssl/cert.pem
      CApath: none
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: CN=foo.bar.com; O=foo.bar.com
    *  start date: Jan 17 06:47:23 2024 GMT
    *  expire date: Jan 16 06:47:23 2025 GMT
    *  issuer: CN=foo.bar.com; O=foo.bar.com
    *  SSL certificate verify result: self signed certificate (18), continuing anyway.
    > GET /version HTTP/1.1
    > Host: foo.bar.com
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < date: Wed, 17 Jan 2024 07:49:39 GMT
    < content-length: 53
    < content-type: text/plain; charset=utf-8
    < req-cost-time: 3
    < req-arrive-time: 1705477779046
    < resp-start-time: 1705477779049
    < x-envoy-upstream-service-time: 2
    < server: istio-envoy
    <
    version: v1
    hostname: httpbin-xxxxxx

Console MSE

Vous pouvez configurer un certificat pour un domaine directement depuis la console MSE. Cette méthode ne nécessite pas de référencer un Kubernetes Secret dans l'objet Ingress ; il vous suffit de configurer les règles de routage.

Important

Pour un même nom de domaine, la méthode via la console MSE est prioritaire sur la méthode Kubernetes Secret. Si vous configurez des certificats pour le même domaine à la fois dans la console MSE et dans une ressource Kubernetes Ingress, le certificat de la console sera utilisé.

  1. Préparez un certificat de domaine et téléchargez-le sur Alibaba Cloud Certificate Management Service. Pour plus d'informations, consultez la rubrique Télécharger, synchroniser et partager des certificats SSL. Si votre certificat est déjà hébergé dans Certificate Management Service, vous pouvez ignorer cette étape.

  2. Créez un domaine et configurez son certificat.

    1. Connectez-vous à la console MSE Gateway Management et sélectionnez une région dans la barre de navigation supérieure.

    2. Dans le volet de navigation de gauche, accédez à Name > OK, puis cliquez sur l'ID de l'instance de passerelle cible.

    3. Dans le volet de navigation de gauche, cliquez sur Cloud-native Gateway, puis sélectionnez l'onglet Domain.

    4. Cliquez sur Add domain name. Ajoutez un Domain name, définissez le protocole Gateways sur HTTPS et sélectionnez le certificat correspondant.

  3. Créez un service.

    1. Sur la page Route Management de l'instance MSE, sélectionnez l'onglet Routes et cliquez sur Create service.

    2. Définissez Protocol sur Container service, sélectionnez les Service appropriés, cochez le service httpbin que vous avez créé précédemment dans la Service list, puis cliquez sur Service Sources.

  4. Créez une route.

    1. Sur la page Route Management de l'instance MSE, sélectionnez l'onglet Route et cliquez sur Create route.

    2. Pour Domain name, sélectionnez le domaine ajouté à l'étape 2. Pour Backend service, sélectionnez le service créé à l'étape 3, puis cliquez sur Save and publish.

  5. Testez le trafic HTTPS. Exécutez la commande suivante en remplaçant x.x.x.x par l'adresse IP réelle de votre passerelle. Vous pouvez trouver l'adresse IP de la passerelle sur la page .

    Remarque

    Si vous utilisez un certificat auto-signé et que le domaine n'est pas enregistré auprès d'un fournisseur DNS, vous devez utiliser l'indicateur --resolve pour résoudre manuellement le nom de domaine vers l'adresse IP de la passerelle et l'indicateur -k pour ignorer la validation du certificat.

    Remplacez <Your-DomainName> par votre nom de domaine réel.

    curl -v -k https://<Your-DomainName>/version --resolve "<Your-DomainName>:443:x.x.x.x"

    Le résultat attendu est le suivant :

    * Connected to ********** (X.X.X.X) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    *   CAfile: /etc/ssl/cert.pem
      CApath: none
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: CN=*********; O=**********
    *  start date: Jan 17 06:47:23 2024 GMT
    *  expire date: Jan 16 06:47:23 2025 GMT
    *  issuer: CN=**********; O=**********
    *  SSL certificate verify result: self signed certificate (18), continuing anyway.
    > GET /version HTTP/1.1
    > Host: **********
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < date: Wed, 17 Jan 2024 08:16:27 GMT
    < content-length: 46
    < content-type: text/plain; charset=utf-8
    < req-cost-time: 5
    < req-arrive-time: 1705479387567
    < resp-start-time: 1705479387573
    < x-envoy-upstream-service-time: 4
    < server: istio-envoy
    <
    version: v1
    hostname: httpbin-xxxxxx