Alibaba Cloud Service Mesh (ASM) vous permet d'ajouter un certificat pour un nom de domaine depuis la console. Cette fonctionnalité sécurise l'accès à votre nom de domaine via des protocoles tels que HTTPS et renforce la sécurité de votre passerelle de service. Cette rubrique explique comment ajouter un certificat pour un nom de domaine.
Prérequis
Vous avez déployé une application dans le cluster associé à votre instance ASM, et l'instance est une édition Enterprise ou Ultimate.
Une passerelle d'entrée est déployée. Pour plus d'informations, consultez la section Créer une passerelle d'entrée.
Vous avez activé l'injection automatique du proxy sidecar pour le namespace. Pour plus d'informations, consultez la section Activer l'injection automatique de sidecar.
Vous avez obtenu l'adresse IP de la passerelle ASM. Pour plus d'informations, consultez la section Obtenir l'adresse IP d'une passerelle ASM.
Contexte
Cette rubrique utilise le service myexampleapp pour le nom de domaine aliyun.com afin d'illustrer l'ajout d'un certificat pour le domaine aliyun.com. Une fois le certificat ajouté avec succès, vous pouvez utiliser une passerelle ASM pour accéder au service myexampleapp du domaine aliyun.com via le protocole HTTPS.
Procédure
-
Créez le service d'exemple myexampleapp.
-
Créez un fichier nommé myexample-nginx.conf contenant le contenu suivant.
Ce service d'exemple repose sur NGINX. Vous devez créer un fichier de configuration pour le serveur NGINX. Pour le service associé au nom de domaine aliyun.com, la configuration ci-dessous indique que les requêtes adressées au chemin racine renvoient le message
Welcome to aliyun.com!et le code d'état200.events { } http { log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log; server { listen 80; location / { return 200 'Welcome to aliyun.com!'; add_header Content-Type text/plain; } } } -
Exécutez la commande suivante pour créer un ConfigMap pour le serveur NGINX :
kubectl create configmap myexample-nginx-configmap --from-file=nginx.conf=./myexample-nginx.conf -
Créez un fichier nommé myexampleapp.yaml contenant le contenu suivant.
-
Exécutez la commande suivante pour créer le service interne pour le nom de domaine aliyun.com :
kubectl apply -f myexampleapp.yaml
-
-
Importez le service myexampleapp dans la passerelle ASM.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page Ingress Gateway, cliquez sur le nom de la passerelle cible.
Sur la page Gateway Details, cliquez sur Upstream Service dans le volet de navigation de gauche.
Sur la page Upstream Service, cliquez sur Import service.
Sur la page Import service, sélectionnez un Namespaces, choisissez le service myexampleapp, cliquez sur l'icône
, puis cliquez sur Submit.
-
Créez un certificat et une clé privée.
-
Exécutez la commande suivante dans OpenSSL pour générer un certificat racine et une clé privée :
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt -
Exécutez les commandes suivantes pour générer un certificat et une clé privée pour le domaine aliyun.com.
-
Exécutez la commande suivante pour créer le certificat aliyun.com.crt :
openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt -
Exécutez la commande suivante pour créer la clé privée aliyun.com.key.
openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization"
-
-
-
Ajoutez le certificat et la clé privée à la passerelle ASM.
RemarqueÀ partir de la version 1.17, les instances ASM prennent en charge les certificats depuis la page Certificate Management. Nous vous recommandons de migrer vos certificats vers Certificate Management. Vous pouvez créer un certificat portant le même nom sur la page Certificate Management pour remplacer automatiquement le certificat existant. Il n'est pas nécessaire de supprimer l'ancien certificat. Pour plus d'informations sur la mise à niveau d'une instance, consultez la section Mettre à niveau une instance ASM.
Un certificat sur la page Certificate Management crée automatiquement un Secret portant le même nom sur le plan de données. Cette action écrase le contenu de tout Secret existant portant le même nom.
Instances ASM antérieures à la v1.17
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page Ingress Gateway, cliquez sur le nom de la passerelle cible. Sur la page Gateway Details, cliquez sur Domain/Certificate dans le volet de navigation de gauche.
Sur la page Domain/Certificate, cliquez sur l'onglet Certificate, puis cliquez sur Create.
Sur la page New Certificate, saisissez un Name, collez le contenu de
aliyun.com.crtdans la zone de texte Certificate et le contenu dealiyun.com.keydans la zone de texte key, puis cliquez sur Create.
ASM v1.17 et versions ultérieures
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page Mesh Management, cliquez sur le nom de l'instance cible. Dans le volet de navigation de gauche, sélectionnez .
-
Sur la page Certificate Management, cliquez sur Create. Dans le panneau Certificate Information, configurez les paramètres et cliquez sur OK.
|
**Paramètre**
|
**Description**
| | --- | --- | |
**Name**
|
Saisissez un nom pour le certificat. Dans cet exemple, utilisez **myexample-credential**.
| |
**Public Key Certificate**
|
Le contenu du fichier `aliyun.com.crt` issu de l'[Étape 3](#step_wef_7e3_bbh).
| |
**Private Key**
|
Le contenu du fichier `aliyun.com.key` issu de l'[Étape 3](#step_wef_7e3_bbh).
|
-
Associez le nom de domaine au certificat.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page Private Key, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez .
Sur la page Ingress Gateway, cliquez sur le nom de la passerelle cible. Sur la page Gateway Details, cliquez sur Domain/Certificate dans le volet de navigation de gauche.
Sur la page Domain/Certificate, cliquez sur l'onglet Domain, puis cliquez sur Create.
-
Sur la page Add domain, définissez le paramètre Domain Name sur *.aliyun.com et le paramètre Protocol sur HTTPS. Saisissez un Port Name et un Port. Sélectionnez une credential et cochez l'option Secure connections with standard TLS semantics.. Ensuite, cliquez sur Create.
RemarqueSi vous sélectionnez l'option Secure connections with standard TLS semantics., seules les requêtes chiffrées via TLS peuvent accéder au nom de domaine.
-
Exécutez la commande suivante pour accéder à aliyun.com via HTTPS et vérifier que le certificat est bien associé au nom de domaine :
curl -k -H Host:www.aliyun.com --resolve www.aliyun.com:443:<IP address of the ASM gateway> https://www.aliyun.comSortie attendue :
Welcome to aliyun.com!Si vous parvenez à accéder à aliyun.com via le protocole HTTPS, cela signifie que le nom de domaine et le certificat sont correctement associés.