Avec une authentification unidirectionnelle, la connexion HTTPS s'établit après l'authentification du serveur. Avec une authentification mutuelle, elle nécessite l'authentification du client et du serveur. Cette méthode renforce la sécurité et protège vos services critiques. Cette rubrique explique comment configurer l'authentification mutuelle sur un écouteur HTTPS d'une instance CLB.
Procédure
Cet exemple utilise un certificat d'autorité de certification (CA) auto-signé pour signer le certificat client. Suivez les étapes ci-dessous pour configurer l'authentification mutuelle sur l'écouteur HTTPS.

Prérequis
Vous avez créé une instance CLB.
Vous avez créé deux serveurs backend, ECS01 et ECS02, exécutant chacun une application différente.
Étape 1 : Acheter un certificat de serveur
Vous pouvez acheter un certificat de serveur via la console Certificate Management Service d'Alibaba Cloud ou auprès d'autres fournisseurs. Un navigateur permet de vérifier si le certificat envoyé par le serveur émane d'une autorité de confiance.
Cette rubrique prend pour exemple un certificat de serveur acheté via la console Certificate Management Service d'Alibaba Cloud. Pour plus d'informations, consultez la rubrique Acheter un certificat SSL.
Assurez-vous de disposer d'un nom de domaine valide à associer au certificat.
Étape 2 : Générer un certificat CA avec OpenSSL
Dans le cadre d'une authentification mutuelle, le certificat serveur doit être émis par une autorité de certification reconnue pour être accepté par les navigateurs (étape 1). En revanche, comme vous gérez et distribuez les certificats clients, une chaîne de confiance publique n'est pas requise. Vous pouvez donc utiliser un certificat CA auto-signé pour les émettre. Suivez les étapes ci-dessous pour générer ce certificat CA.
Connectez-vous à une machine Linux sur laquelle OpenSSL est installé.
-
Exécutez la commande suivante pour créer la clé privée du certificat racine :
openssl genrsa -out root.key 4096 -
Exécutez la commande suivante pour créer une demande de signature de certificat (CSR) pour le certificat racine :
openssl req -new -out root.csr -key root.keySaisissez les informations demandées. Voici un exemple :
RemarqueLe Common Name du certificat CA doit être unique. N'utilisez pas le même Common Name que celui des certificats serveur ou client.
Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:bj Locality Name (eg, city) [Default City]:bj Organization Name (eg, company) [Default Company Ltd]:alibaba Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your servers hostname) []:root Email Address []:a.alibaba.com A challenge password []: An optional company name []: -
Exécutez la commande suivante pour créer le certificat racine :
openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650Le résultat ressemble à ce qui suit :
[root@i-xxx ~]# openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650 Signature ok subject=C = cn, ST = bj, L = bj, O = alibaba, OU = test, CN = root, emailAddress = xxx@xxx.com Getting Private key Exécutez
lspour afficher le certificat racine généréroot.crtet la clé privéeroot.key.
Étape 3 : Générer un certificat client
Exécutez la commande suivante pour générer la clé privée du certificat client :
Exécutez la commande suivante pour générer un fichier CSR pour le certificat client. Définissez le Common Name sur votre nom de domaine.
Exécutez la commande suivante pour générer le certificat client :
Exécutez la commande suivante pour convertir le certificat client généré
client.crten un fichier PKCS12 reconnu par le navigateur. Saisissez le mot de passe de chiffrement défini pour la clé privée client lorsque le système vous y invite.Exécutez
lspour afficher les fichiers de certificat client générés :client.key,client.crtetclient.p12.
openssl genrsa -out client.key 4096
openssl req -new -out client.csr -key client.key
openssl x509 -req -in client.csr -out client.crt -CA root.crt -CAkey root.key -CAcreateserial -days 3650
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
Étape 4 : Installer le certificat client
Installez le certificat client sur le poste client.
Client Windows
Double-cliquez sur le fichier client.p12 et suivez l'Assistant Importation de certificats pour l'installer.
Client Linux
Téléchargez les fichiers client.key, client.crt et root.crt dans un répertoire de votre choix sur le client Linux.
Dans cet exemple, le répertoire est /home/ca. Exécutez sudo chmod 700 /home/ca pour modifier les permissions du répertoire.
Étape 5 : Télécharger le certificat serveur et le certificat CA
Connectez-vous à la console CLB.
Dans le volet de navigation de gauche, choisissez , puis cliquez sur Add Certificate pour télécharger le certificat serveur.
-
Dans le panneau Add Certificate, cliquez sur Third-party Certificates, configurez les paramètres suivants, puis cliquez sur Create.
Parameter
Description
Certificate Name
Saisissez un nom pour le certificat.
Certificate Type
Sélectionnez Server Certificate.
Public Key Certificate
Contenu du certificat serveur. Collez-le dans l'éditeur.
Private Key
Clé privée du certificat serveur. Collez-la dans l'éditeur.
Region
Sélectionnez la région de l'instance CLB.
Sur la page Certificates, cliquez sur Add Certificate pour télécharger le certificat CA.
-
Dans le panneau Add Certificate, cliquez sur Third-party Certificates, configurez les paramètres suivants, puis cliquez sur Create.
Parameter
Description
Certificate Name
Saisissez un nom pour le certificat.
Certificate Type
Sélectionnez CA Certificate.
Client CA Certificate
Téléchargez le certificat de clé publique du client.
Region
Sélectionnez la région de l'instance CLB.
Étape 6 : Configurer l'authentification mutuelle sur un écouteur HTTPS
CLB rejette les requêtes des clients sans certificat installé. Si votre instance CLB est en production, testez d'abord cette configuration dans un environnement de préproduction. Vous pouvez également utiliser un nouveau port d'écoute pour éviter toute interruption de service.
Connectez-vous à la console Classic Load Balancer.
Cliquez sur l'ID de l'instance CLB que vous avez créée.
Sous l'onglet Listeners, cliquez sur Add Listener.
-
Sous l'onglet Protocol & Listener, configurez les paramètres suivants, puis cliquez sur Next.
Select Listener Protocol : HTTPS
Listener Port : 443
Sous l'onglet Certificate Management Service, sélectionnez le certificat serveur que vous avez téléchargé.
Cliquez sur Modify à côté de Advanced Settings, activez l'authentification mutuelle, sélectionnez le certificat CA téléchargé, puis cliquez sur Next.
Sélectionnez Default Server Group et cliquez sur Add pour ajouter des serveurs backend.
Conservez les valeurs par défaut pour les autres paramètres et cliquez sur Next pour avancer dans l'assistant. Sur la dernière page, cliquez sur Submit pour créer l'écouteur.
Étape 7 : Tester la fonctionnalité d'authentification mutuelle
Client Windows
Dans un navigateur, saisissez
https://ip:port, où ip correspond à l'adresse IP publique de l'instance CLB. Dans la boîte de dialogue qui s'affiche, confirmez le certificat selon les instructions.-
Actualisez la page web. Les requêtes sont réparties uniformément entre les serveurs backend.
La page affiche
Hello World ! This is ECS01., ce qui indique que la requête a été transférée vers le serveur ECS01.La page affiche
Hello World ! This is ECS02., ce qui indique que la requête a été transférée vers le serveur ECS02.
Client Linux
Connectez-vous au client Linux sur lequel les certificats sont installés et exécutez la commande suivante pour vérifier l'authentification mutuelle CLB :
sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/root.crt https://<the domain name on the server certificate>:<port>
Si les réponses suivantes s'affichent, l'authentification mutuelle entre le client et le serveur est opérationnelle et les requêtes sont distribuées aux deux instances ECS.
[test@iZxxxw521i57Z ~]$ sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/ca.crt https://xxx.com.cn
Hello World ! This is ECS01.
[test@iZxxxw521i57Z ~]$ sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/ca.crt https://xxx.com.cn
Hello World ! This is ECS02.