Network Load Balancer (NLB) prend en charge le déchargement SSL à grande échelle. Vous pouvez déployer une instance NLB en tant que point d'entrée pour le trafic et configurer un certificat SSL ainsi qu'un certificat d'autorité de certification (CA) afin d'activer l'authentification mutuelle. Cette dernière exige que le client et le serveur fournissent tous deux des certificats numériques pour prouver leur identité, ce qui renforce la sécurité de vos charges de travail.
Informations générales
Authentification unidirectionnelle : le client doit vérifier l'identité du serveur. Le serveur n'a pas besoin de vérifier l'identité du client. Le client télécharge un certificat de clé publique depuis le serveur pour s'authentifier. Une connexion ne peut être établie qu'après la vérification de l'identité du serveur.
Authentification mutuelle : le client télécharge un certificat serveur (certificat de clé publique) depuis le serveur et transmet un certificat client (certificat de clé publique) au serveur pour s'authentifier. Une connexion ne peut être établie qu'après la vérification des identités du client et du serveur. L'authentification mutuelle offre un niveau de sécurité supérieur.
Prérequis
Une instance NLB a été créée. Pour plus d'informations, consultez la rubrique Créer et gérer des instances NLB.
-
Trois instances Elastic Compute Service (ECS) ont été créées. Pour savoir comment créer une instance, consultez la rubrique Créer une instance à l'aide de l'assistant.
-
ECS01 et ECS02 sont ajoutés à l'instance NLB en tant que serveurs backend. Des applications NGINX différentes sont déployées sur ECS01 et ECS02.
ECS03 sert à générer des certificats serveur et client auto-signés. OpenSSL est téléchargé depuis le site OpenSSL et installé sur ECS03. La version d'OpenSSL doit être 1.1.1 ou ultérieure. Si vous utilisez un serveur Linux existant pour générer des certificats auto-signés, il n'est pas nécessaire de créer ECS03.
-
-
Un groupe de serveurs a été créé pour l'instance NLB, et ECS01 et ECS02 y ont été ajoutés. Dans cet exemple, les ports backend de ECS01 et ECS02 sont définis sur 80.
ImportantLe protocole backend du groupe de serveurs doit être TCP. Les requêtes envoyées par NLB au serveur backend sont déchiffrées via SSL ; les serveurs backend n'ont donc pas besoin d'effectuer de déchiffrement SSL sur les requêtes reçues.
Vous ne pouvez pas associer des écouteurs utilisant SSL sur TCP à des groupes de serveurs pour lesquels la fonctionnalité Client IP Preservation est activée. **Assurez-vous que la fonctionnalité Client IP Preservation est désactivée pour le groupe de serveurs.**
Étape 1 : Préparer un certificat CA
Connectez-vous à la console Certificate Management Service
Dans le volet de navigation de gauche, choisissez Private Certificate Management.
Sur la page Private Certificate Management, sous l'onglet Private CAs, localisez le certificat CA racine.
Cliquez sur l'icône
située à côté du certificat CA racine, localisez l'autorité de certification intermédiaire privée que vous souhaitez gérer, puis cliquez sur Apply for Certificate dans la colonne Actions.-
Dans le panneau Apply for Certificate, configurez les paramètres et cliquez sur Confirm.
La section suivante décrit les paramètres pertinents pour cette rubrique. Pour plus d'informations, consultez la rubrique Gérer les certificats privés.
Paramètre
Description
Certificate Type
Sélectionnez le type de certificat privé à acheter. Dans cet exemple, Client Certificate est sélectionné.
Personal Name
Identifiant unique de l'utilisateur client. Requis uniquement pour un certificat client.
Dans cet exemple, saisissez le nom de domaine de l'instance NLB.
Validity Period
Spécifiez une période de validité pour le certificat privé. La période de validité du certificat privé ne peut pas dépasser la durée d'abonnement du service Private Certificate Authority (PCA) que vous avez acheté.
Dans cet exemple, la période de validité par défaut est utilisée, soit 30 jours.
Le certificat privé est émis immédiatement après la soumission de la demande. Pour afficher les détails du certificat privé, localisez l'autorité de certification privée, cliquez sur Certificates dans la colonne Actions, puis consultez les informations sur la page Certificates.
Console Certificate Management Service
Étape 2 : Préparer un certificat de serveur
Un navigateur vérifie l'identité d'un serveur en s'assurant que le certificat envoyé par ce dernier a été émis par une autorité de certification (CA) de confiance. Cette rubrique présente deux méthodes pour obtenir un certificat de serveur : vous pouvez acheter un certificat via Certificate Management Service ou importer un certificat auto-signé dans Certificate Management Service.
Méthode 1 : Acheter un certificat de serveur
Vous pouvez acheter des certificats de serveur auprès du service Certificate Management Service ou chez d'autres fournisseurs de services. Pour plus d'informations, consultez la rubrique Acheter un certificat SSL.
Méthode 2 : Importer un certificat de serveur auto-signé
-
Connectez-vous à distance à l'instance ECS03 et exécutez la commande suivante pour générer un certificat de serveur auto-signé. Assurez-vous que le certificat de l'autorité de certification (CA) est stocké sur ECS03. Dans cet exemple, les fichiers de certificat de CA utilisés sont
root.crtetroot.key.-
Exécutez la commande ci-dessous pour générer une clé privée pour le certificat de serveur :
sudo openssl genrsa -out server.key 4096 -
Générez une demande de signature de certificat (CSR) à l'aide de la commande suivante :
sudo openssl req -new -out server.csr -key server.keyConfigurez les autres paramètres comme suit :
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) []:www.example.com Email Address []:a.alibaba.com A challenge password []: An optional company name []:ImportantDéfinissez le paramètre Common Name avec le nom de domaine associé au certificat de serveur. Vérifiez que le nom de domaine est valide. Conservez les mêmes valeurs pour les autres paramètres que celles utilisées pour le certificat racine et le certificat client.
Dans cet exemple, l'instance NLB utilise le nom de domaine personnalisé
www.example.compour fournir des services externes. Par conséquent, la valeur de Common Name est définie surwww.example.com. -
Générez la clé publique du certificat de serveur en exécutant la commande suivante :
sudo openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650Le résultat suivant s'affiche :
Signature ok subject=/C=cn/ST=bj/L=bj/O=alibaba/OU=test/CN=www.xxx.com.cn/emailAddress=a.alibaba.com Getting Private key Getting CA Private Key -
Créez un dossier pour stocker les fichiers du certificat de serveur à l'aide de la commande suivante :
sudo mkdir -p /root/ssl -
Copiez le certificat de serveur dans ce dossier en exécutant les commandes suivantes :
sudo cp server.crt /root/ssl sudo cp server.key /root/ssl -
Vérifiez la présence du certificat de serveur
server.crtet de sa clé privéeserver.keyà l'aide des commandes suivantes :cd /root/ssl lsLe système renvoie le résultat suivant :
root.crt root.csr root.key root.srl server.crt server.csr server.key
-
-
Dans cet exemple, un client Windows est utilisé. Ouvrez l'interface de ligne de commande (CLI) sur le client Windows et exécutez les commandes ci-dessous pour exporter les fichiers de certificat de serveur générés lors de l'Étape 1 vers le bureau local :
scp root@IPaddress:/root/ssl/server.crt C:\Users\Public\Desktop #Replace 'IPaddress' with the IP address of the server that generates the server certificate scp root@IPaddress:/root/ssl/server.key C:\Users\Public\Desktop #Replace 'IPaddress' with the IP address of the server that generates the server certificate Connectez-vous à la console Certificate Management Service.
Dans le volet de navigation de gauche, sélectionnez .
Cliquez sur l'onglet Uploaded Certificates puis cliquez sur Upload Certificate.
-
Dans le panneau Upload Certificate , configurez les paramètres suivants et cliquez sur OK.
Pour plus de détails, consultez la rubrique Importer, synchroniser et partager des certificats SSL.
Paramètre
Description
Certificate Algorithm
Dans cet exemple, l'option Internationally Accepted Algorithm est sélectionnée.
Certificate Name
Saisissez un nom pour le certificat que vous souhaitez importer.
Certificate File
Saisissez le contenu du fichier de certificat de l'autorité de certification (CA) encodé au format PEM.
Vous pouvez saisir le contenu de l'une des manières suivantes. Méthode 1 : ouvrez le fichier de certificat de CA au format PEM ou CRT à l'aide d'un éditeur de texte, puis copiez son contenu dans le champ Fichier de certificat. Méthode 2 : cliquez sur Upload and Parse File sous le champ Fichier de certificat, puis sélectionnez le fichier de certificat de CA sur votre ordinateur pour importer son contenu.
Dans cet exemple, le fichier de certificat de serveur
server.crtest importé.Certificate Key
Saisissez le contenu du fichier de clé privée encodé au format PEM.
Vous pouvez saisir le contenu de l'une des manières suivantes. Méthode 1 : ouvrez le fichier de clé privée au format KEY à l'aide d'un éditeur de texte, puis copiez son contenu dans le champ Ajouter une clé privée. Méthode 2 : cliquez sur Upload and Parse File sous le champ Ajouter une clé privée, puis sélectionnez le fichier de clé privée sur votre ordinateur pour importer son contenu.
Dans cet exemple, le fichier de clé privée
server.keyest importé.Certificate Chain
Saisissez le contenu du fichier de chaîne de certificats. Ce paramètre est ignoré dans cet exemple.
Étape 3 : Préparer un certificat client
Selon vos besoins métier, vous pouvez préparer un certificat client de l'une des façons suivantes :
Connectez-vous à la console Certificate Management Service.
Dans le volet de navigation de gauche, sélectionnez Private Certificate Management.
-
Sur la page Private Certificate Management, sous l'onglet Private CAs, localisez le certificat racine de l'autorité de certification.
Pour plus d'informations sur l'achat d'un certificat racine d'autorité de certification, consultez la rubrique Acheter et activer une autorité de certification privée.
Localisez le certificat racine de l'autorité de certification et cliquez sur l'icône
. Ensuite, recherchez le certificat d'autorité de certification subordonnée et cliquez sur Certificates dans la colonne Actions.-
Sur la page Certificates, localisez le certificat privé cible. Dans la colonne Actions, cliquez sur Download.
Dans la boîte de dialogue Download Certificate, sélectionnez un format de certificat et cliquez sur Confirm and Download. Dans cet exemple, le format CRT est sélectionné, le certificat client est
client.crtet la clé privée du certificat estclient.key.-
Convertir le certificat client en fichier PKCS12 reconnaissable par le navigateur.
Connectez-vous à distance à l'instance ECS03. Pour plus d'informations, consultez les Instructions relatives à la connexion aux instances.
-
Exécutez la commande suivante pour créer un dossier destiné à stocker le certificat client :
sudo mkdir -p /root/ca/users Téléchargez le certificat client
client.crtet la clé privée du certificatclient.keydans le répertoire users.-
Exécutez la commande suivante pour convertir le certificat client en fichier PKCS12 :
sudo openssl pkcs12 -export -clcerts -in /root/ca/users/client.crt -inkey /root/ca/users/client.key -out /root/ca/users/client.p12 Suivez les instructions pour définir une clé de chiffrement pour la clé privée du certificat.
-
Saisissez le mot de passe utilisé pour exporter le certificat client. Ce mot de passe sert à chiffrer le certificat client et est requis lors de l'installation de ce dernier.
Le résultat suivant s'affiche :
Enter pass phrase for /root/ca/users/client.key: Enter Export Password: Verifying - Enter Export Password:
-
Exécutez les commandes suivantes pour afficher le certificat client généré :
cd /root/ca/users lsLe résultat suivant s'affiche :
client.crt client.key client.p12 -
Dans cet exemple, un client Windows est utilisé. Ouvrez l'interface de ligne de commande et exécutez la commande suivante pour exporter le certificat client :
scp root@IPaddress:/root/ca/users/client.p12 C:\Users\Public\Desktop #Replace 'IPaddress' with the IP address of the server that generates the client certificate
Étape 4 : Installer le certificat client
Installez le certificat client sur votre machine cliente. Cet exemple illustre la procédure d'installation sur un client Windows et sur un client Linux.
Client Windows
Importez le certificat client dans Microsoft Edge.
Ouvrez Microsoft Edge. Dans le coin supérieur droit, sélectionnez
> Settings.-
Dans le volet de navigation de gauche, cliquez sur l'onglet Privacy, search, and services. Cliquez ensuite sur Manage certificates dans la section Security et importez le fichier PKCS12. À cette étape, vous devez saisir le mot de passe utilisé pour exporter le certificat client à l'étape 3.
Client Linux
Si l'instance ECS03 a été utilisée pour générer le certificat client, celui-ci est stocké dans le répertoire de l'instance ECS03. Si un autre client Linux a servi à générer le certificat client, suivez les étapes ci-dessous pour copier d'abord les certificats dans le répertoire du client Linux :
-
Connectez-vous au client Linux. Exécutez les commandes suivantes pour copier le certificat client, le certificat serveur et le certificat racine dans un répertoire :
-
Exécutez la commande suivante pour créer un dossier :
sudo mkdir /root/ca -
Exécutez la commande suivante pour modifier les autorisations du répertoire :
sudo chmod 700 /root/ca -
Exécutez la commande suivante pour copier les certificats dans le répertoire du client Linux :
Le chemin indiqué ci-dessous est fourni à titre indicatif uniquement. Spécifiez le chemin réel que vous utilisez.
sudo scp home@IPaddress:/root/ca/users/client.crt /root/ca //Replace 'IPaddress' with the IP address of the server that generates the client certificate sudo scp home@IPaddress:/root/ca/root.crt /root/ca //Replace 'IPaddress' with the IP address of the server that generates the root certificate sudo scp home@IPaddress:/root/ca/root.key /root/ca //Replace 'IPaddress' with the IP address of the server that generates the root certificate sudo scp home@IPaddress:/root/ssl/server.crt /root/ca //Replace 'IPaddress' with the IP address of the server that generates the server certificate sudo scp home@IPaddress:/root/SSL/server.key /root/ca //Replace 'IPaddress' with the IP address of the server that generates the server certificate
-
Étape 5 : Configurer l'authentification mutuelle pour un écouteur utilisant SSL sur TCP
Connectez-vous à la console NLB.
Dans la barre de navigation supérieure, sélectionnez la région de l'instance NLB.
Sur la page Instances, localisez l'instance NLB et cliquez sur Actions dans la colonne Create Listener.
-
À l'étape Configure Listener, définissez les paramètres suivants et cliquez sur Next.
Le tableau suivant décrit uniquement certains des paramètres. Conservez les valeurs par défaut pour les autres paramètres. Pour plus d'informations, consultez la rubrique Créer un écouteur utilisant SSL sur TCP.
Parameter
Procedure
Listener Protocol
Sélectionnez un protocole d'écouteur. Dans cet exemple, TCPSSL est sélectionné.
Listener Port
Spécifiez le port sur lequel l'instance NLB écoute. L'instance NLB utilise ce port pour recevoir les requêtes et les transférer aux serveurs backend. Le port 443 est utilisé dans cet exemple.
À l'étape Configure SSL Certificate, sélectionnez le certificat serveur spécifié à l'étape 2 dans la liste déroulante Server Certificate.
Activez l'option Enable Mutual Authentication. Sélectionnez le certificat d'autorité de certification acheté à l'étape 1 dans la liste déroulante Default CA Certificate.
Sélectionnez une TLS Security Policy et cliquez sur Next.
À l'étape Select Server Group, sélectionnez le groupe de serveurs que vous avez créé et consultez les informations relatives aux serveurs backend ECS01 et ECS02. Dans cet exemple, les ports des serveurs backend sont définis sur 80. Cliquez ensuite sur Next.
À l'étape Configuration Review, confirmez les configurations et cliquez sur Submit.
Étape 6 : Vérifier l'authentification mutuelle
Client Windows
-
Accédez à la page Instances de NLB, cliquez sur l'ID de l'instance NLB que vous souhaitez gérer, puis cliquez sur l'onglet Listener pour afficher l'état des vérifications d'intégrité des écouteurs utilisant SSL sur TCP.
Si la colonne Health Check Status affiche Healthy, les serveurs backend peuvent traiter les requêtes transmises par l'écouteur NLB.
Saisissez
https://The domain name associated with the server certificatedans la barre d'adresse de votre navigateur, par exemplehttps://www.example.com. Dans la boîte de dialogue qui s'affiche, sélectionnez le certificat utilisé pour vérifier l'identité du client et cliquez sur OK.
Afin d'éviter les problèmes liés au cache du navigateur, nous vous recommandons d'utiliser une fenêtre de navigation privée pour accéder au nom de domaine DNS chaque fois que vous testez l'équilibrage de charge de couche 4. Vous pouvez observer que les requêtes sont distribuées aux deux instances ECS. Un accès renvoie Hello World ! This is ECS01. et un autre accès renvoie Hello World ! This is ECS02.
Client Linux
Connectez-vous au client Linux où sont stockés le certificat racine, le certificat serveur et le certificat client, puis exécutez les commandes suivantes pour tester l'authentification mutuelle :
sudo curl --cert /root/ca/client.crt --key /root/ca/client.key --cacert /root/ca/root.crt www.example.com
www.example.com correspond au nom de domaine associé au certificat serveur.
Si le paquet de réponse echo suivant est renvoyé, cela signifie que le client et le serveur ont tous deux réussi l'authentification mutuelle et que les requêtes sont distribuées aux instances ECS01 et ECS02.
$ sudo curl --cert /root/ca/client.crt --key /root/ca/client.key --cacert /root/ca/root.crt https://xxx.com.cn
Hello World ! This is ECS01.
$ sudo curl --cert /root/ca/client.crt --key /root/ca/client.key --cacert /root/ca/root.crt https://xxx.com.cn
Hello World ! This is ECS02.