Comment puis-je utiliser la CA privée AWS pour configurer mTL sur l'Application Load Balancer ?

Lecture de 7 minute(s)
0

Je souhaite délivrer une autorité de certification privée (CA privée) à un client que je pourrai ensuite utiliser pour authentifier le protocole TLS mutuel (mTLS) sur l'Application Load Balancer.

Résolution

Pour créer une autorité de certification privée pour l'authentification mTLS dans la console de gestion AWS, procédez comme suit.

Créez un Application Load Balancer avec un écouteur HTTPS

Créez un écouteur HTTPS pour votre Application Load Balancer.

Utilisez AWS private CA pour créer le bundle de certificats de l'autorité de certification racine

  1. Connectez-vous à la console de gestion AWS.
  2. Accédez à Autorité de certification privée AWS.
  3. Sélectionnez Créer une autorité de certification privée. Sélectionnez CA racine, puis renseignez les informations. Conservez le reste par défaut. Sélectionnez CA privée.
  4. Sélectionnez Actions. Puis, sélectionnez Installer le certificat CA.
  5. Sélectionnez Expiration, puis confirmez votre choix. Puis, sélectionnez Installer.

Utilisez AWS private CA pour créer deux CA subordonnées

Après avoir installé la CA racine, créez deux autres CA subordonnées. Puis, utilisez ces CA pour émettre des certificats d'entité finale.

Remarque : Vous pouvez créer jusqu'à quatre certificats subordonnés sur l'Application Load Balancer. Pour plus d'informations sur la hiérarchie des CA, consultez la section Conception d'une hiérarchie de CA.

Créer une CA1 subordonnée

Procédez comme suit sur la console de gestion AWS :

  1. Accédez à Autorité de certification privée AWS, puis sélectionnez Créer une autorité de certification privée.
  2. Sélectionnez CA subordonnée, puis renseignez les informations. Sélectionnez Créer une autorité de certification.
    Remarque : Assurez-vous de saisir un autre nom de CA unique d’objet (par exemple, nom commun (CN) comme SubCA1) dans le champ pour plus de détails.
  3. Sélectionnez Actions. Puis, sélectionnez Installer le certificat CA.
  4. Sélectionnez CA racine comme CA parente.
  5. Sélectionnez Expiration et confirmez votre choix. Puis, sélectionnez Installer.
    Remarque : Assurez-vous que la date d'expiration est inférieure à celle attribuée à la CA racine.
  6. Sélectionnez la longueur du chemin sur 1 ou 2 pour ajouter d'autres certificats subordonnés. Ou conservez la valeur 0, en fonction de votre cas d'utilisation.

Créer une CA2 subordonnée

Procédez comme suit :

  1. Suivez les étapes 1 à 3 que vous avez utilisées précédemment pour créer une CA1 subordonnée.
  2. Sélectionnez CA1 subordonnée comme CA parente.
    Remarque : Pour l'étape 2, saisissez un autre nom de CA unique d’objet (par exemple, nom commun (CN) comme SubCA2) dans le champ pour plus de détails.
  3. Spécifiez Expiration et confirmez. Puis, sélectionnez Installer.
    Remarque : Assurez-vous que la date d'expiration est inférieure à celle attribuée à la CA1 subordonnée.

Vous avez à présent la CA racine (niveau 1) qui signe la CA1 subordonnée (niveau 2). La CA1 subordonnée signe à son tour la CA2 subordonnée (niveau 3)
Remarque : La profondeur maximale de la chaîne de certificats pour l'Application Load Balancer est de quatre.

Chargez le bundle de certificats vers Amazon Simple Storage Service

Procédez comme suit sur la console de gestion AWS :

  1. Créez un fichier nommé CABundle.pem, puis copiez la chaîne de certificats et le corps du certificat depuis la CA2 subordonnée. (Chaîne de certificats, corps du certificat dans cet ordre)
  2. Créez un compartiment Amazon S3 avec la politique requise. Exemple :
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "acm-pca.amazonaws.com"
                },
                "Action": [
                    "s3:PutObject",
                    "s3:PutObjectAcl",
                    "s3:GetBucketAcl",
                    "s3:GetBucketLocation"
                ],
                "Resource": [
                    "arn:aws:s3:::<bucket-name>/*",
                    "arn:aws:s3:::<bucket-name>"
                ],
                "Condition": {
                    "StringEquals": {
                        "aws:SourceAccount": "Your Acc Id",
                        "aws:SourceArn": arn:aws:acm-pca:us-east-1:<AccountID>:certificate-authority/abcde-efgh-45dd-b564-1234abcd"
                    }
                }
            }
        ]
    }
    Remarque : Remplacez <AccountID:certificate-authority/abcde-efgh-45dd-b564-1234abcd> par votre numéro de compte et l’Amazon Resource Name (ARN) de la CA2 subordonnée.
  3. Chargez CABundle.pem vers votre compartiment Amazon 3.

Créez un magasin de confiance, puis associez-le à l'écouteur activé par mTLS

  1. Créez un magasin de confiance.
  2. Associez le magasin de confiance à l'écouteur mTLS de l'Application Load Balancer.

Utilisez la CA privée pour émettre un certificat client

  1. Utilisez la commande suivante de l'interface de ligne de commande AWS (AWS CLI) pour créer une requête de signature de certificat (CSR) :

    openssl req -out client_csr1.pem -new -newkey rsa:2048 -nodes -keyout client_private-key1.pem

    Cette commande renvoie la CSR et la clé privée.
    **Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente d’AWS CLI.

  2. Émettez un certificat à l'aide de la CA privée AWS que vous venez de créer :

    aws acm-pca issue-certificate \
          --certificate-authority-arn arn:aws:acm-pca:us-east-1:679542158453:certificate-authority/c929c98e-f0e8-45dd-b564-e2bb5b121b88 \
          --csr fileb://client_csr1.pem \
          --signing-algorithm "SHA256WITHRSA" \
          --validity Value=30,Type="DAYS"

    Cette commande renvoie l'ARN du certificat.

  3. Émettez le certificat :

    aws acm-pca get-certificate \
          --certificate-authority-arn arn:aws:acm-pca:us-east-1:679542158453:certificate-authority/c929c98e-f0e8-45dd-b564-e2bb5b121b88 \
          --certificate-arn arn:aws:acm-pca:us-east-1:679542158453:certificate-authority/c929c98e-f0e8-45dd-b564-e2bb5b121b88/certificate/add80c25606b48fcd3c4472ae0962125 | \
          jq -r .'Certificate' > client_cert1.cert

Testez mTLS

Transmettez le certificat client que vous avez créé dans la requête. Si le processus aboutit, vous avez terminé l'authentification bidirectionnelle. L'équilibreur de charge a authentifié le certificat client en même temps que le client a authentifié le certificat de l'équilibreur de charge.

curl -ivk --cert client_cert1.cert --key client_private-key1.pem https://<elb-name>

Révocation du certificat de test

Si un certificat émis est compromis ou n'est plus nécessaire, révoquez le certificat à l'aide de la liste de révocation des certificats (CRL). Lorsque vous utilisez une CA privée AWS, vous créez automatiquement le fichier .CRL lorsque vous activez la distribution de CRL.

Pour activer la distribution de CRL sur la console de gestion AWS, procédez comme suit :

  1. Accédez à la CA2 subordonnée.
  2. Sélectionnez Configuration de la révocation, puis sélectionnez ** Activer la distribution de CRL**.
  3. Utilisez le même compartiment S3 que précédemment, puis sélectionnez Créer. Un fichier de test nommé acm-pca-permission-test-key-private est alors créé si votre stratégie de compartiment S3 est correctement définie.

Révoquez le certificat

Pour révoquer un certificat, vous devez d'abord obtenir le numéro de série du certificat émis.

  1. Pour obtenir le numéro de série, utilisez la commande AWS CLI suivante :

    openssl x509 -in   client_cert1.cert -text -noout  
  2. Émettez la commande revoke certificate

    aws acm-pca revoke-certificate --certificate-authority-arn arn:aws:acm-pca:us-east-1:679542158453:certificate-authority/c929c98e-f0e8-45dd-b564-e2bb5b121b88 --certificate-serial ad:d8:0c:25:60:6b:48:fc:d3:c4:47:2a:e0:96:21:25 --revocation-reason "KEY_COMPROMISE"

    Cette action crée un fichier .CRL dans le compartiment S3. Notez que la création du fichier .CRL prend prendre jusqu’à 30 minutes.

Mettez à jour le magasin de confiance avec le fichier CRL

Convertissez le format de fichier

Utilisez la commande AWS CLI pour modifier le format de fichier :

Convertissez le fichier .CRL du compartiment S3 au format .pem.
Remarque : L'Application Load Balancer ne prend en charge que les CRL au format .pem.

openssl crl -in revoked.crl -inform DER -out revoked_crl_in_pem.crl

Mettez à jour le magasin de confiance

Procédez comme suit pour mettre à jour le magasin de confiance dans la console de gestion AWS :

  1. Connectez-vous à la console de gestion AWS.
  2. Accédez au magasin de confiance.
  3. Accédez à Listes de révocation de certificats. Sélectionnez Ajouter une liste de révocation.
  4. Sélectionnez Parcourir S3. Puis, sélectionnez le fichier .CRL au format .pem à partir du compartiment S3 que vous avez utilisé précédemment.
  5. Sélectionnez Charger.

Remarque : Réexécutez l'étape Tester mTLS. Notez que l'authentification mTLS échoue car vous avez révoqué le certificat émis.

Vous pouvez également répéter l'étape Utiliser la CA privée pour émettre des certificats client afin d'émettre plusieurs certificats et de vérifier mTL.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 6 mois