Avec une authentification unidirectionnelle, la connexion HTTPS s'établit après l'authentification du serveur. Avec une authentification mutuelle, elle ne s'établit qu'après l'authentification du client et du serveur. Cette méthode offre une sécurité accrue. Configurez l'authentification mutuelle pour protéger 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, qui exécutent chacun une application différente.
Étape 1 : Acheter un certificat de serveur
Achetez un certificat de serveur depuis la console Certificate Management Service d'Alibaba Cloud ou auprès d'autres fournisseurs. Utilisez un navigateur pour vérifier si le certificat envoyé par le serveur est émis par une autorité de confiance.
Cette rubrique utilise un certificat de serveur acheté via la console Certificate Management Service d'Alibaba Cloud à titre d'exemple. Pour plus d'informations, consultez la section 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 de l'authentification mutuelle, le certificat serveur doit être émis par une autorité de certification reconnue pour être approuvé par les navigateurs (Étape 1). En revanche, comme vous gérez et distribuez les certificats clients, ils n'ont pas besoin d'une chaîne de confiance publique. Vous pouvez donc utiliser un certificat CA auto-signé pour les émettre. Suivez ces étapes pour générer un certificat CA auto-signé destiné à l'émission des certificats clients.
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 une clé privée pour le 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 vous y êtes invité.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 certificat pour l'installer.
Client Linux
Téléchargez les fichiers client.key, client.crt et root.crt dans n'importe quel répertoire de votre 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, sélectionnez , 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 contenu dans l'éditeur.
Private Key
Clé privée du certificat serveur. Collez la clé privée 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 à 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 provenant de 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 d'interrompre les services existants.
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 en cliquant 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 du CLB. Dans la boîte de dialogue qui s'affiche, confirmez le certificat selon les instructions.-
Actualisez la page web. Vous constatez que 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, cela signifie que l'authentification mutuelle entre le client et le serveur est opérationnelle et que 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.