Activez l'authentification mutuelle sur ALB pour exiger que le client et le serveur vérifient mutuellement leur identité avant d'établir une connexion. Cette mesure empêche les attaques de type « man-in-the-middle » et les accès non autorisés dans les scénarios à haute sécurité, tels que les transactions financières et le secteur de la santé.
Présentation de la fonctionnalité
Pourquoi utiliser l'authentification mutuelle
La plupart des applications web utilisent une authentification unidirectionnelle pour établir des connexions HTTPS. Le client vérifie l'identité du serveur, ce qui garantit qu'il se connecte au bon serveur.
Pour les applications nécessitant un niveau de sécurité plus élevé, le serveur doit également vérifier l'identité du client. L'authentification mutuelle garantit que seuls les clients autorisés peuvent accéder au service, réduisant ainsi les risques tels que les attaques de type « man-in-the-middle » et les accès non autorisés.
Cas d'utilisation
Transactions financières, soins de santé, services bancaires et paiements en ligne : tout scénario où le système doit vérifier l'identité du client en plus de celle du serveur.
Si vous n'avez pas besoin d'authentifier les clients, il n'est pas nécessaire d'utiliser l'authentification mutuelle.
Limites
Seules les instances ALB des éditions Standard et WAF-Enhanced prennent en charge l'authentification mutuelle. Les instances ALB de l'édition Basic ne prennent pas en charge cette fonctionnalité.
Seuls les écouteurs HTTPS prennent en charge l'authentification mutuelle. Les écouteurs QUIC et HTTP ne prennent pas en charge cette fonctionnalité.
Exemple de scénario
Une entreprise a déployé une plateforme de transaction en ligne qui utilisait initialement uniquement une authentification HTTPS unidirectionnelle. Des appareils non autorisés tentaient d'accéder au système, posant des risques de fuite de données et de falsification des transactions. À mesure que le trafic augmentait, la plateforme subissait également une pression croissante sur les performances lors des pics d'activité.
Pour résoudre ces problèmes, l'entreprise a déployé une instance ALB et activé l'authentification mutuelle.
ALB répartit les requêtes des clients entre les serveurs backend, garantissant des performances stables et des temps de réponse rapides, même lors des pics de forte concurrence.
Avec l'authentification mutuelle activée, tous les clients doivent fournir un certificat valide pour établir une connexion, ce qui empêche les accès non autorisés et réduit le risque de fuite de données et de falsification des transactions.
Prérequis
-
Vous avez acheté ou téléchargé un certificat de serveur dans Certificate Management Service.
Cette rubrique utilise un certificat de serveur acheté depuis la console Certificate Management Service d'Alibaba Cloud à titre d'exemple.
RemarqueLorsque vous achetez un certificat SSL, vous devez le lier à un nom de domaine. Assurez-vous de disposer d'un nom de domaine valide et accessible.
-
Vous avez créé un VPC (VPC1) et créé deux instances ECS (ECS01 et ECS02) dans VPC1. Les services applicatifs sont déployés sur les deux instances.
Cet exemple utilise Alibaba Cloud Linux 3 comme système d'exploitation et Nginx pour configurer le service HTTPS.
Une instance ALB est créée. Pour utiliser l'authentification mutuelle ou les certificats SM, l'édition de l'instance doit être Standard Edition ou WAF-enabled Edition.
-
Vous avez créé un groupe de serveurs et ajouté ECS01 et ECS02 en tant que serveurs backend.
Si vous souhaitez que l'instance ALB communique avec les serveurs backend via HTTPS, sélectionnez HTTPS comme protocole backend lors de la création du groupe de serveurs et assurez-vous que le service HTTPS est déployé sur les serveurs backend.
Procédure
Étape 1 : Configurer le certificat client
Vous devez préparer et exporter un certificat client.
Cette rubrique décrit deux méthodes pour obtenir un certificat d'autorité de certification. Vous pouvez acheter un certificat d'autorité de certification et demander un certificat client dans Certificate Management Service, ou télécharger un certificat d'autorité de certification auto-signé vers Certificate Management Service.
1. Préparer un certificat client
Depuis la console
Pour plus d'informations, consultez la rubrique Demander un certificat privé.
Connectez-vous à la console Certificate Management Service.
Dans le volet de navigation de gauche, choisissez . Sur la page Private Certificate Management, sélectionnez la région où se trouve le service PCA.
Sur l'onglet Private CAs, recherchez l'autorité de certification intermédiaire cible et cliquez sur Apply for Certificate dans la colonne Actions.
-
Dans le panneau Apply for Certificate, configurez les paramètres du certificat comme indiqué dans le tableau suivant, puis cliquez sur Confirm.
Dans cet exemple, lorsque vous demandez un certificat client, définissez Certificate Type sur Client Certificate et saisissez un Personal Name pour identifier de manière unique l'utilisateur client. Vous pouvez conserver les valeurs par défaut pour les autres paramètres ou les modifier selon vos besoins.
Après avoir soumis la demande, l'autorité de certification privée émet immédiatement le certificat. Vous pouvez ensuite cliquer sur Certificates dans la colonne Actions pour l'autorité de certification intermédiaire afin d'afficher le certificat émis.
Auto-signé
-
Connectez-vous à ECS01 et exécutez les commandes suivantes pour générer un certificat d'autorité de certification racine auto-signé.
Une instance ALB prend en charge l'authentification mutuelle à l'aide d'un certificat d'autorité de certification racine auto-signé ou d'un certificat d'autorité de certification intermédiaire auto-signé. Cet exemple utilise un certificat d'autorité de certification racine auto-signé.
-
Exécutez la commande suivante pour créer une clé privée pour le certificat d'autorité de certification 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 d'autorité de certification racine :
openssl req -new -out root.csr -key root.keySaisissez les informations requises lorsque vous y êtes invité. Le code suivant fournit un exemple :
RemarqueAssurez-vous que le Common Name du certificat d'autorité de certification est unique et différent du Common Name du certificat de serveur ou du certificat 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****@example.com A challenge password []: An optional company name []: -
Exécutez la commande suivante pour créer le certificat d'autorité de certification racine :
openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650La sortie suivante est renvoyée :
Signature ok subject=C = cn, ST = bj, L = bj, O = alibaba, OU = test, CN = root, emailAddress = a****@example.com Getting Private Key -
Exécutez la commande
lspour afficher le certificat d'autorité de certification racine généréroot.crtet sa clé privéeroot.key.Vous pouvez télécharger ces fichiers de certificat d'autorité de certification racine sur votre ordinateur pour une utilisation ultérieure.
-
-
Téléchargez le certificat d'autorité de certification racine auto-signé vers Certificate Management Service.
Connectez-vous à la console Certificate Management Service.
Dans le volet de navigation de gauche, choisissez .
Sur la page Certificate Application Repository, cliquez sur Create Repository. Dans le panneau Create repository, définissez Data source sur Uploaded CA certificates et cliquez sur OK.
Sur la page Certificate Application Repository, cliquez sur le dépôt que vous avez créé.
Sur la page Certificates, cliquez sur Uploaded Certificate. Dans le panneau CA information, téléchargez le fichier de certificat d'autorité de certification racine
root.crtet cliquez sur Confirm and Enable.
2. Exporter le certificat client
Exporter depuis la console
Pour utiliser un certificat client acheté depuis la console pour l'authentification mutuelle, exportez-le en suivant ces étapes :
Sur l'onglet Private CAs, recherchez l'autorité de certification subordonnée cible, puis cliquez sur Certificates dans la colonne Actions.
Sur la page Certificates, recherchez le certificat privé cible, puis cliquez sur Download dans la colonne Actions.
-
Dans la boîte de dialogue Download Certificate, sélectionnez le format de certificat que vous souhaitez télécharger, puis cliquez sur Confirm and Download. Si vous sélectionnez Include Trust Chain, le certificat téléchargé inclut la chaîne de certificats complète.
Dans cet exemple, sélectionnez PFX pour le format de certificat. Ce format est reconnu par les navigateurs.
Les fichiers téléchargés incluent un fichier de certificat client avec l'extension
.pfxet un fichier texte avec l'extension.txtqui contient le mot de passe de chiffrement pour la clé privée du client.
Exporter un certificat auto-signé
Pour utiliser un certificat client généré à partir d'un certificat d'autorité de certification auto-signé pour l'authentification mutuelle, suivez ces étapes pour le générer :
Connectez-vous à ECS01 et effectuez les étapes suivantes pour générer un certificat client :
-
Exécutez la commande suivante pour générer une clé privée pour le certificat client :
openssl genrsa -out client.key 4096 -
Exécutez la commande suivante pour générer une CSR pour le certificat client :
openssl req -new -out client.csr -key client.keySaisissez les informations requises lorsque vous y êtes invité. Le code suivant fournit un exemple :
RemarqueAssurez-vous que le Common Name du certificat client est unique et différent du Common Name du certificat de serveur, du certificat racine ou de tout autre certificat 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) []:client-alb-user Email Address []:username@example.com A challenge password []: An optional company name []: -
Exécutez la commande suivante pour générer le certificat client.
openssl x509 -req -in client.csr -out client.crt -CA root.crt -CAkey root.key -CAcreateserial -days 3650La sortie suivante est renvoyée :
Signature ok subject=C = cn, ST = bj, L = bj, O = alibaba, OU = test, CN = client-alb-user, emailAddress = username@example.com Getting CA Private Key -
Exécutez la commande suivante pour convertir le certificat client généré
client.crten un fichier PKCS12, qui est reconnu par les navigateurs. Saisissez le mot de passe de chiffrement de la clé privée du client lorsque vous y êtes invité.openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12 -
Exécutez la commande
lspour afficher le fichier de certificat clientclient.p12généré.Vous pouvez télécharger le fichier de certificat client sur votre ordinateur pour une utilisation ultérieure sur le client.
Étape 2 : Configurer un écouteur d'authentification mutuelle
Dans la barre de navigation supérieure de la console ALB, sélectionnez la région où l'instance ALB est déployée. Sur la page Instances, recherchez l'instance ALB que vous souhaitez gérer et cliquez sur son ID.
-
Sur la page des détails de l'instance, cliquez sur l'onglet Listener et cliquez sur Create Listener. Configurez les paramètres et cliquez sur Next.
Dans cet exemple, définissez Select Listener Protocol sur HTTPS et Listener Port sur 443. Vous pouvez conserver les valeurs par défaut pour les autres paramètres de l'écouteur HTTPS ou les modifier selon vos besoins.
-
À l'étape SSL Certificate, sélectionnez le certificat de serveur que vous avez acheté. Ensuite, activez Enable Mutual Authentication et sélectionnez une source de certificat d'autorité de certification ainsi que le certificat correspondant. Enfin, sélectionnez une politique de sécurité TLS et cliquez sur Next.
Définissez CA Certificate Source sur Alibaba Cloud. Dans la liste déroulante Default CA Certificate, sélectionnez le certificat d'autorité de certification que vous avez demandé à l'Étape 1 : Configurer le certificat client.
Définissez CA Certificate Source sur Third-party. Dans la liste déroulante Default CA Certificate, sélectionnez le certificat d'autorité de certification auto-signé que vous avez téléchargé à l'Étape 1 : Configurer le certificat client.
À l'étape Server Group, sélectionnez un Server Type et le Server Type backend. Vérifiez les informations concernant les serveurs backend ECS01 et ECS02, puis cliquez sur Next.
À l'étape Confirm, vérifiez les configurations et cliquez sur Submit.
Étape 3 : Configurer la résolution DNS
Pour les environnements de production, nous vous recommandons de créer un enregistrement CNAME pour mapper votre nom de domaine personnalisé au nom DNS de l'instance ALB.
Dans le volet de navigation de gauche de la console ALB, choisissez . Sur la page Instances, copiez le nom DNS de l'instance ALB créée.
-
Effectuez les étapes suivantes pour ajouter un enregistrement CNAME.
-
Sur la page DNS Resolution, recherchez le nom de domaine personnalisé cible et cliquez sur DNS Settings dans la colonne Operations.
RemarqueSi votre nom de domaine n'est pas enregistré auprès d'Alibaba Cloud, vous devez d'abord ajouter votre nom de domaine à la console Alibaba Cloud DNS avant de pouvoir configurer les paramètres DNS.
-
Sur la page des paramètres DNS, cliquez sur Add DNS record, configurez l'enregistrement CNAME et cliquez sur OK.
Dans cet exemple, définissez Record type sur CNAME et Record value sur le nom DNS de l'instance ALB. Vous pouvez conserver les valeurs par défaut pour les autres paramètres d'enregistrement DNS ou les modifier selon vos besoins.
-
Étape 4 : Tester l'authentification mutuelle
Cet exemple utilise un client Windows et le navigateur Chrome.
-
Installez le certificat client exporté sur le client.
Double-cliquez sur le fichier de certificat client téléchargé et suivez les instructions de l'assistant d'importation de certificat pour installer le certificat client.
Dans le navigateur, saisissez
https://<your custom domain name>. Dans la boîte de dialogue qui s'affiche, sélectionnez le certificat à utiliser pour l'authentification du client.-
Actualisez le navigateur. Vous pouvez observer que les requêtes du client sont distribuées entre les serveurs ECS01 et ECS02.
Si la page renvoie Hello World ! This is ECS01., la requête est transférée vers ECS01.
Si vous actualisez la page et qu'elle renvoie Hello World ! This is ECS02., la requête est transférée vers ECS02.
Références
Opérations de console
-
Informations relatives à ALB :
-
Informations relatives aux certificats :
Référence API
Vous pouvez appeler les opérations d'API suivantes et définir le paramètre CaEnabled sur true pour activer l'authentification mutuelle.