L'authentification mutuelle HTTPS permet au serveur et au client de s'authentifier mutuellement. Utilisez cette fonctionnalité sur ALB Ingress dans les secteurs bancaires, financiers, l'IoT, les services internes ou les environnements gouvernementaux où les données sont sensibles ou où l'accès doit être limité aux clients de confiance.
Fonctionnement
| Authentification HTTPS unidirectionnelle | Authentification mutuelle HTTPS | |
|---|---|---|
| Le client vérifie le serveur | Oui | Oui |
| Le serveur vérifie le client | Non | Oui |
| Le client détient | — | Certificat SSL ou TLS signé par une autorité de certification racine |
| Le serveur détient | Certificat serveur | Certificat d'autorité de certification racine |
Le serveur utilise son certificat d'autorité de certification racine pour vérifier le certificat du client avant d'établir la connexion.
Prérequis
Assurez-vous de disposer des éléments suivants :
Un certificat SSL ou TLS est configuré sur l'écouteur ALB.
-
Un certificat d'autorité de certification racine obtenu par l'une des méthodes suivantes :
Achat d'une autorité de certification privée dans Certificate Management Service
Génération d'un certificat d'autorité de certification autosigné
(Facultatif) Étape 1 : Générer un certificat d'autorité de certification autosigné
Ignorez cette étape si vous disposez déjà d'un certificat d'autorité de certification racine.
-
Générez une clé privée :
openssl genrsa -out ca.key 4096 -
Créez une demande de signature de certificat (CSR) :
Champ Obligatoire Description Country Name Oui Code pays à deux lettres, par exemple cnState or Province Name Oui Nom de la province ou de la région Locality Name Oui Nom de la ville Organization Name Oui Nom de l'organisation Organizational Unit Name Oui Nom du département Common Name Non Un nom couramment utilisé Email Address Non Adresse e-mail de l'administrateur du certificat A challenge password Non Mot de passe de sécurité CSR facultatif. Laissez ce champ vide si nécessaire openssl req -new -out ca.csr -key ca.keyOpenSSL vous invite à saisir les champs suivants :
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 []:example@ali A challenge password []: -
Créez le certificat d'autorité de certification racine avec une validité de 3 650 jours :
Fichier Description ca.crtCertificat d'autorité de certification racine ca.csrFichier CSR ca.keyClé privée openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -CAcreateserial -days 3650Exécutez
lspour confirmer les fichiers générés :ca.crt ca.csr ca.key
Étape 2 : Télécharger le certificat d'autorité de certification
Téléchargez le certificat d'autorité de certification racine vers Certificate Management Service afin d'obtenir un identifiant de certificat pour AlbConfig.
Connectez-vous à la console Certificate Management Service. Sélectionnez la région Outside Chinese Mainland. Dans le volet de navigation de gauche, cliquez sur Certificate Application Repository.
-
Sur la page Certificate Application Repository, cliquez sur Create Repository. Dans le panneau Create Repository, définissez les paramètres suivants et cliquez sur OK.
Paramètre Description Repository Name Nom personnalisé du référentiel Data Source Sélectionnez Upload CA Certificates pour télécharger des certificats signés par des autorités de certification tierces Cliquez sur votre référentiel, puis sur Uploaded Certificates.
-
Dans le panneau CA Information, remplissez les champs suivants et cliquez sur Confirm and Enable.
Paramètre Description Package Name Nom personnalisé du certificat CA Certificates Collez le contenu du certificat, ou cliquez sur Upload and Parse File Cliquez sur Details pour le certificat téléchargé et notez l'identifiant du certificat pour l'étape 4.
Étape 3 : Générer un certificat client
Utilisez le certificat d'autorité de certification racine pour signer un certificat client.
-
Générez une clé privée pour le client :
openssl genrsa -out client.key 4096 -
Créez une CSR pour le certificat client :
openssl req -new -out client.csr -key client.keyRemplissez les mêmes champs que lors de l'étape 1. Les valeurs peuvent différer de celles du certificat d'autorité de certification.
-
Signez le certificat client à l'aide de l'autorité de certification racine :
Fichier Description client.crtCertificat client signé par l'autorité de certification racine client.csrFichier CSR client.keyClé privée du client openssl x509 -req -in client.csr -out client.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650Les fichiers
ca.crtetca.keyproviennent de l'étape 1. Exécutezlspour confirmer la sortie :client.crt client.csr client.key
Étape 4 : Activer et tester l'authentification mutuelle
Activer l'authentification mutuelle
-
Ouvrez AlbConfig pour modification :
kubectl edit albconfig <ALBCONFIG_NAME>Remplacez
<ALBCONFIG_NAME>par le nom de votre AlbConfig. -
Dans la configuration de l'écouteur HTTPS (port 443), ajoutez
caEnabled: trueet définissezcaCertificates.CertificateIdsur l'identifiant du certificat obtenu à l'étape 2 :apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: #... spec: config: #... listeners: - port: 443 protocol: HTTPS caEnabled: true # Enable mutual authentication caCertificates: - CertificateId: 0e40dda998174723af39d37fcaf***** # Certificate identifier from Step 2 certificates: #...
Tester l'authentification mutuelle
-
Récupérez le nom d'hôte et l'adresse de l'Ingress :
kubectl get ingressSortie attendue :
NAME CLASS HOSTS ADDRESS PORTS AGE https-ingress https-ingressclass demo.alb.ingress.top alb-********.alb.aliyuncs.com 80, 443 83mNotez les valeurs
HOSTSetADDRESS. -
Envoyez une requête avec le certificat client. Remplacez
demo.alb.ingress.topetalb-********.alb.aliyuncs.compar les valeurs de l'étape précédente :curl -H HOST:demo.alb.ingress.top -k https://alb-********.alb.aliyuncs.com --cert client.crt --key client.keySortie attendue :
old
(Facultatif) Étape 5 : Désactiver l'authentification mutuelle
-
Ouvrez AlbConfig pour modification :
kubectl edit albconfig <ALBCONFIG_NAME> -
Définissez
caEnabledsurfalse:apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: #... spec: config: #... listeners: - port: 443 protocol: HTTPS caEnabled: false # Disable mutual authentication caCertificates: - CertificateId: 0e40dda998174723af39d37fcaf***** certificates: #...