Network Load Balancer (NLB) prend en charge le déchargement SSL à grande échelle. Vous pouvez déployer une instance NLB comme point d'entrée pour le trafic et configurer un certificat SSL ainsi qu'un certificat d'autorité de certification (CA) pour activer l'authentification mutuelle. Cette méthode exige que le client et le serveur fournissent tous deux des certificats numériques afin de 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. La 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 de serveur (certificat de clé publique) depuis le serveur et transmet un certificat client (certificat de clé publique) au serveur pour authentification. La 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 en tant que serveurs backend à l'instance NLB. Des applications NGINX différentes sont déployées sur ECS01 et ECS02.
ECS03 est utilisée pour générer des certificats de serveur et des certificats clients 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 d'ECS01 et d'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 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, sélectionnez 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é que vous souhaitez 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 la période de validité du certificat privé. Elle ne peut pas dépasser la durée d'abonnement au 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.
Étape 2 : Préparer un certificat de serveur
Un navigateur vérifie l'identité d'un serveur en contrôlant si le certificat envoyé par le serveur a été émis par une autorité de certification de confiance. Cette rubrique décrit deux méthodes pour obtenir un certificat de serveur. Vous pouvez acheter un certificat de serveur auprès du service Certificate Management Service ou télécharger un certificat auto-signé vers 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 auprès d'autres prestataires de services. Pour plus d'informations, consultez la rubrique Acheter un certificat SSL.
Méthode 2 : Télécharger un certificat de serveur auto-signé
-
Connectez-vous à distance à ECS03 et exécutez la commande suivante pour générer un certificat de serveur auto-signé. Assurez-vous que le certificat CA est stocké sur ECS03. Les fichiers de certificat CA utilisés dans cet exemple sont
root.crtetroot.key.-
Exécutez la commande suivante pour générer une clé privée pour le certificat de serveur :
sudo openssl genrsa -out server.key 4096 -
Exécutez la commande suivante pour générer une demande de signature de certificat (CSR) :
sudo openssl req -new -out server.csr -key server.keyConfigurez les autres paramètres. Exemples :
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 Common Name sur le nom de domaine associé au certificat de serveur. Assurez-vous que le nom de domaine est valide. Conservez les mêmes valeurs pour les autres paramètres que celles du certificat racine et du certificat client.
Dans cet exemple, l'instance NLB utilise le nom de domaine personnalisé
www.example.compour fournir des services externes. Par conséquent, le Common Name est défini surwww.example.com. -
Exécutez la commande suivante pour générer une clé publique pour le certificat de serveur :
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 -
Exécutez la commande suivante pour créer un dossier destiné à stocker les fichiers de certificat de serveur :
sudo mkdir -p /root/ssl -
Exécutez la commande suivante pour copier le certificat de serveur dans le dossier :
sudo cp server.crt /root/ssl sudo cp server.key /root/ssl -
Exécutez la commande suivante pour afficher le certificat de serveur
server.crtet la clé privéeserver.keydu certificat de serveur :cd /root/ssl lsLe résultat suivant s'affiche :
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 suivantes pour exporter les fichiers de certificat de serveur générés à 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 et cliquez sur Upload Certificate.
-
Dans le panneau Upload Certificate, configurez les paramètres suivants et cliquez sur OK.
Pour plus d'informations, consultez la rubrique Télécharger, synchroniser et partager des certificats SSL.
Paramètre
Description
Certificate Algorithm
Dans cet exemple, Internationally Accepted Algorithm est sélectionné.
Certificate Name
Saisissez un nom pour le certificat que vous souhaitez télécharger.
Certificate File
Saisissez le contenu du fichier de certificat CA encodé en PEM.
Vous pouvez utiliser l'une des méthodes suivantes pour saisir le contenu. Méthode 1 : Utilisez un éditeur de texte pour ouvrir le fichier de certificat CA au format PEM ou CRT. Copiez ensuite le contenu dans le champ Certificate File. Méthode 2 : Cliquez sur Upload and Parse File sous le champ Certificate File. Sélectionnez ensuite le fichier de certificat CA sur votre ordinateur pour télécharger son contenu.
Dans cet exemple, le fichier de certificat de serveur
server.crtest téléchargé.Certificate Key
Saisissez le contenu du fichier de clé privée encodé en PEM.
Vous pouvez utiliser l'une des méthodes suivantes pour saisir le contenu. Méthode 1 : Utilisez un éditeur de texte pour ouvrir le fichier de clé privée au format KEY. Copiez ensuite le contenu dans le champ Add Private Key. Méthode 2 : Cliquez sur Upload and Parse File sous le champ Add Private Key. Sélectionnez ensuite le fichier de clé privée sur votre ordinateur pour télécharger son contenu.
Dans cet exemple, le fichier de clé privée
server.keyest téléchargé.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 en utilisant l'une des méthodes 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 d'autorité de certification racine.
Pour plus d'informations sur l'achat d'un certificat d'autorité de certification racine, consultez la rubrique Acheter et activer une autorité de certification privée.
Localisez le certificat d'autorité de certification racine et cliquez sur l'icône
. Ensuite, localisez le certificat d'autorité de certification subordonnée et cliquez sur Certificates dans la colonne Actions.-
Sur la page Certificates, repérez 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.-
Convertissez le certificat client en un fichier PKCS12 reconnaissable par un navigateur.
Connectez-vous à distance à ECS03. Pour plus d'informations, consultez les Instructions relatives à la connexion aux instances.
-
Exécutez la commande suivante pour créer un dossier afin de 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 un 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 pour installer 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 CLI 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 client. Dans cet exemple, un client Windows et un client Linux sont utilisés pour illustrer la procédure d'installation du certificat client.
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. Ensuite, cliquez 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 ECS03 a été utilisé pour générer le certificat client, celui-ci est stocké dans le répertoire d'ECS03. Si un autre client Linux est utilisé pour 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 suivant 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 un 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. Ensuite, cliquez 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 de la vérification d'intégrité des écouteurs utilisant SSL sur TCP.
Si la colonne Health Check Status affiche Healthy, cela signifie que les serveurs backend peuvent traiter les requêtes transférées 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.
Pour é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 est le 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 à 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.