Passer au contenu

Comment puis-je créer une CRL pour ma CA privée AWS ?

Lecture de 10 minute(s)
0

Je souhaite créer une liste de révocation de certificats (CRL) pour mon autorité de certification privée AWS.

Résolution

Lorsque vous créez une CRL, AWS Private CA la place dans un compartiment Amazon Simple Storage Service (Amazon S3) que vous désignez. Pour restreindre l'accès au compartiment S3, utilisez une stratégie d'autorisations. Pour permettre à AWS Private CA de placer des objets dans le compartiment, incluez l'autorisation Put dans la stratégie de compartiment. Pour récupérer les métadonnées du compartiment, incluez l’autorisation Get.

Remarque : Lorsque vous configurez un nouveau compartiment S3, Bloquer l’accès public (BPA) est activé par défaut.

Pour créer une CRL pour votre CA privée AWS, procédez comme suit :

Créer un nouveau compartiment Amazon S3

Procédez comme suit :

  1. Ouvrez la console Amazon S3.
  2. Sélectionnez Créer un compartiment.
  3. Dans Nom du compartiment, saisissez un nom pour votre compartiment.
  4. Pour Propriétaire de l’objet, sélectionnez Listes ACL désactivées, puis sélectionnez Créer un compartiment.
  5. Pour Compartiments, sélectionnez votre compartiment.
  6. Sélectionnez l’onglet Autorisations.
  7. Dans Politique de compartiment, sélectionnez Modifier.
  8. Pour Politique, saisissez la politique suivante :
    {  
    "Version": "2012-10-17",  
    "Statement": [
        {
          "Sid": "PolicyForPcaCrl",
          "Effect": "Allow",
          "Principal": {
            "Service": "acm-pca.amazonaws.com"
          },
          "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetBucketAcl",
            "s3:GetBucketLocation"
          ],
          "Resource": [
            "arn:aws:s3:::your-crl-storage-bucket/*",
            "arn:aws:s3:::your-crl-storage-bucket"
          ],
          "Condition": {
            "StringEquals": {
              "aws:SourceAccount": "account"
            }
          }
        }
      ]
    }
    Remarque : Remplacez your-crl-storage-bucket par votre compartiment et account par votre compte AWS.
  9. Sélectionnez Enregistrer les modifications.

Pour plus d’informations, consultez la section Création d’un compartiment.

Créer une distribution CloudFront

Procédez comme suit :

  1. Ouvrez la console Amazon CloudFront.

  2. Sélectionnez Créer une distribution.

  3. Pour Domaine d’origine, choisissez un nom de domaine qui inclut le compartiment S3. Utilisez la convention de dénomination suivante : your-crl-storage-bucket.s3.region.amazonaws.com.

  4. Sous Accès d’origine, sélectionnez Paramètres de contrôle d'accès d'origine (recommandé).

  5. Pour Contrôles d'accès d’origine, sélectionnez Créer un nouvel OAC, puis Créer.

  6. Pour Pare-feu d’application Web (WAF), sélectionnez Ne pas activer les protections de sécurité. Si cela est nécessaire pour votre cas d'utilisation, activez les protections de sécurité.

  7. Sélectionnez Créer une distribution.

  8. Une fois que la bannière « La stratégie de compartiment S3 doit être mise à jour » apparaît, sélectionnez Copier la stratégie. Puis, enregistrez la stratégie.

    Exemple de stratégie :

    {
      "Version": "2008-10-17",
      "Id": "PolicyForCloudFrontPrivateContent",
      "Statement": [
        {
          "Sid": "AllowCloudFrontServicePrincipal",
          "Effect": "Allow",
          "Principal": {
            "Service": "cloudfront.amazonaws.com"
          },
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::your-crl-storage-bucket/*",
          "Condition": {
            "StringEquals": {
              "AWS:SourceArn": "arn:aws:cloudfront::account:distribution/DISTRIBUTION_ID"
            }
          }
        }
      ]
    }

Créer une CA

Si vous avez déjà utilisé AWS Private CA pour créer une autorité de certification (CA), accédez à la rubrique Configurer une CRL pour votre CA.

Pour créer une CA, procédez comme suit :

  1. Ouvrez la console AWS Private CA dans votre région AWS.
  2. Sélectionnez Créer une CA privée.
  3. Configurez les paramètres CA suivants :
    Important : Après avoir créé votre CA, vous ne pouvez pas mettre à jour Mode, Type de CA, Nom unique de l’objet et Algorithme de clé.
    Pour Mode, sélectionnez Universel.
    Pour Options de type de CA, sélectionnez Racine.
    Pour Options de nom unique de l'objet, saisissez un nom pour votre CA, puis configurez les autres champs.
    Pour Options de l'algorithme de clé, sélectionnez RSA 2048.
    Pour Options de révocation des certificats, désactivez CRL et OCSP.
    Pour Options d'autorisations de la CA, sélectionnez Autoriser l'accès ACM pour renouveler les certificats demandés par ce compte.
  4. Sélectionnez Accusé de réception de la tarification, puis sélectionnez Créer une CA.
  5. Vérifiez que le statut de la CA est Certificat en attente.
  6. Sous Actions, sélectionnez Installer le certificat CA.
  7. Configurez la Validité et l’Algorithme de signature du certificat CA.

Configurer une CRL pour votre CA

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.

  1. Créez un fichier JSON de configuration CRL avec les informations suivantes :
    {  
    "CrlConfiguration": {
        "Enabled": true,
        "ExpirationInDays": 7,
        "S3ObjectAcl": "BUCKET_OWNER_FULL_CONTROL",
        "CustomCname":"abcdef012345.cloudfront.net",
        "S3BucketName": "your-crl-storage-bucket"
      }
    }
    Remarque : Remplacez your-crl-storage-bucket par le nom de votre compartiment. Vous pouvez également mettre à jour la valeur de ExpirationInDays pour modifier la période de validité de la CRL.
  2. Pour permettre à AWS Private CA de publier un fichier CRL dans votre compartiment, mettez à jour votre stratégie de compartiment :
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "PolicyForPcaCrl",
          "Effect": "Allow",
          "Principal": {
            "Service": "acm-pca.amazonaws.com"
          },
          "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetBucketAcl",
            "s3:GetBucketLocation"
          ],
          "Resource": [
            "arn:aws:s3:::your-crl-storage-bucket/*",
            "arn:aws:s3:::your-crl-storage-bucket"
          ],
          "Condition": {
            "StringEquals": {
              "aws:SourceAccount": "account",
              "aws:SourceArn": "arn:aws:acm-pca:region:account:certificate-authority/CA_ID"
            }
          }
        }
      ]
    }
    Remarque : Remplacez your-crl-storage-bucket par votre compartiment, region par votre région, account par votre compte et CA_ID par l'ID de la CA.
  3. Pour permettre à la distribution CloudFront d'obtenir le fichier CRL, mettez à jour la stratégie que vous avez copiée lors de la création de votre distribution CloudFront :
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "PolicyForPcaCrl",
          "Effect": "Allow",
          "Principal": {
            "Service": "acm-pca.amazonaws.com"
          },
          "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetBucketAcl",
            "s3:GetBucketLocation"
          ],
          "Resource": [
            "arn:aws:s3:::your-crl-storage-bucket/*",
            "arn:aws:s3:::your-crl-storage-bucket"
          ],
          "Condition": {
            "StringEquals": {
              "aws:SourceAccount": "account",
              "aws:SourceArn": "arn:aws:acm-pca:region:account:certificate-authority/CA_ID"
            }
          }
        },
        {
          "Sid": "AllowCloudFrontServicePrincipal",
          "Effect": "Allow",
          "Principal": {
            "Service": "cloudfront.amazonaws.com"
          },
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::your-crl-storage-bucket/*",
          "Condition": {
            "StringEquals": {
              "AWS:SourceArn": "arn:aws:cloudfront::account:distribution/DISTRIBUTION_ID"
            }
          }
        }
      ]
    }
    Remarque : Remplacez your-crl-storage-bucket par votre compartiment, region par votre région, account par votre compte, CA_ID par l’ID de la CA et DISTRIBUTION_ID par la distribution CloudFront.
    Pour plus d'informations, consultez les sections Stratégies d'accès pour les CRL dans Amazon S3 et Autoriser le contrôle d'accès d'origine à accéder au compartiment S3.
  4. Pour mettre à jour la CA et activer la CRL, exécutez la commande de l’interface de ligne de commande AWS update-certificate-authority :
    aws acm-pca update-certificate-authority --certificate-authority-arn arn:aws:acm-pca:region:account:certificate-authority/CA_ID --revocation-configuration file://revoke_config.json
    Remarque : Remplacez region par votre région, account par votre compte et CA_ID par votre ID de CA.

Tester votre CRL

Pour vérifier que votre CRL est publiée et accessible, procédez comme suit :

  1. Ouvrez la console ACM.
  2. Sélectionnez Demander un certificat.
  3. Sélectionnez Demander un certificat privé, puis cliquez sur Suivant.
  4. Dans la section Autorité de certification, choisissez votre CA.
  5. Pour Nom de domaine complet, saisissez votre nom de domaine.
    Remarque : Vous n'avez pas besoin d'étapes de validation de domaine pour les certificats privés.
  6. Sélectionnez Je comprends qu'ACM ne sera pas en mesure de renouveler les certificats privés émis par cette autorité de certification sans les autorisations nécessaires.
  7. Sélectionnez Demander.
  8. Sur la page Détails du certificat privé, vérifiez que Statut est Émis.
  9. Notez le numéro de série du certificat privé.
  10. Pour révoquer le certificat privé, exécutez la commande de l'interface de ligne de commande AWS revoke-certificate :
aws acm-pca revoke-certificate --certificate-authority-arn arn:aws:acm-pca:region:account:certificate-authority/CA_ID --certificate-serial SERIAL --revocation-reason UNSPECIFIED

Remarque : Remplacez region par votre région, account par votre compte, CA_ID par votre ID de CA et SERIAL par le numéro de série du certificat privé. Remplacez UNSPECIFIED par un motif de révocation spécifique.
Lorsque vous exécutez cette commande, AWS CloudTrail enregistre un événement RevokeCertificate. Ouvrez la console Amazon CloudWatch. Sélectionnez Toutes les métriques, puis ACMPrivateCA. Sélectionnez PrivateCametrics. Vérifiez les métriques CRLGenerated pour votre CA. Le point de données des métriques est enregistré après l'eventTime de l'événement RevokeCertificate.
Remarque : Les fichiers CRL sont mis à jour environ 30 minutes après une révocation. Pour plus d'informations, consultez la section Planifier la méthode de révocation de votre certificat AWS Private CA. Pour accéder au fichier CRL, utilisez la distribution CloudFront.

Exemple d'URL :

https://example.cloudfront.net/crl/CA_ID.crl

Remarque : Remplacez example par le nom de votre domaine de distribution CloudFront et CA_ID par votre ID d’autorité de certificat. Vous pouvez trouver le nom de domaine de votre distribution dans la console CloudFront. Pour vérifier que le numéro de série révoqué figure dans la sortie de la commande, téléchargez et consultez le fichier CRL.

(Facultatif) Chiffrez votre CRL avec AWS Key Management Service (AWS KMS).

Vous pouvez activer le chiffrement côté serveur avec AWS KMS (SSE-KMS) sur le compartiment qui contient votre CRL. Notez qu’AWS Private CA ne prend pas en charge le chiffrement des fichiers CRL pour les clés KMS gérées. Vous devez créer une clé KMS gérée par le client. Pour plus d'informations sur SSE-KMS dans Amazon S3, consultez la section Utilisation du chiffrement côté serveur avec des clés AWS KMS (SSE-KMS).

Procédez comme suit :

  1. Ouvrez la console AWS KMS dans la même région que votre compartiment S3.
  2. Sélectionnez Clé gérée par le client, puis Créer une clé.
  3. Sous Configurer la clé, conservez les valeurs par défaut, puis sélectionnez Suivant.
  4. Sous Ajouter des étiquettes, pour Alias, saisissez un alias clé et pour Description, saisissez une description.
  5. Pour Définir les autorisations d’administration de clé, saisissez votre utilisateur ou votre rôle AWS Identity and Access Management (IAM) actuel, puis sélectionnez Suivant.
  6. Pour Définir les autorisations d'utilisation de clé, sélectionnez Suivant.
  7. Confirmez votre configuration, puis sélectionnez Terminer.
  8. Dans Clés gérées par le client, sélectionnez votre clé AWS KMS.
  9. Sous Stratégie de clé, sélectionnez Passer à la vue de stratégie.
  10. Sélectionnez Modifier.
  11. Saisissez une nouvelle stratégie de clé pour le chiffrement et la distribution des fichiers CRL.

Pour une stratégie de clé avec la clé de compartiment activée, saisissez la stratégie suivante :

{  
"Id": "key-consolepolicy-bucket-key-enabled",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::account:root"
      },
      "Action": "kms:*",
      "Resource": "*"
    },
    {
      "Sid": "Allow access for Key Administrators",
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "arn:aws:iam::account:role/your-role-name",
          "arn:aws:iam::account:user/your-user-name"
        ]
      },
      "Action": [
        "kms:Create*",
        "kms:Describe*",
        "kms:Enable*",
        "kms:List*",
        "kms:Put*",
        "kms:Update*",
        "kms:Revoke*",
        "kms:Disable*",
        "kms:Get*",
        "kms:Delete*",
        "kms:TagResource",
        "kms:UntagResource",
        "kms:ScheduleKeyDeletion",
        "kms:CancelKeyDeletion",
        "kms:RotateKeyOnDemand"
      ],
      "Resource": "*"
    },
    {
      "Sid": "Allow ACM-PCA use of the key",
      "Effect": "Allow",
      "Principal": {
        "Service": "acm-pca.amazonaws.com"
      },
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:EncryptionContext:aws:s3:arn":"arn:aws:s3:::your-crl-storage-bucket"
        }
      }
    },
    {
      "Sid": "AllowCloudFrontServicePrincipalSSE-KMS",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudfront.amazonaws.com"
      },
      "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey*"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "AWS:SourceArn": "arn:aws:cloudfront::account:distribution/DISTRIBUTION_ID"
        }
      }
    }
  ]
}

Remarque : Remplacez account par votre compte, your-role-name par votre rôle IAM, your-user-name par votre utilisateur IAM, your-crl-storage-bucket par votre compartiment et DISTRIBUTION_ID par votre distribution CloudFront.

Pour créer une stratégie de clé sans clé de compartiment activée, remplacez les valeurs de la clé de condition kms:EncryptionContext:aws:s3:arn par des clés d'objet spécifiques.

  1. Sélectionnez Enregistrer les modifications.
  2. Ouvrez la console Amazon S3.
  3. Sélectionnez votre compartiment, puis choisissez Propriétés.
  4. Sous Chiffrement par défaut, sélectionnez Modifier.
  5. Saisissez les paramètres de chiffrement suivants :
    Pour Type de chiffrement, sélectionnez Chiffrement côté serveur avec des clés AWS Key Management Service (SSE-KMS).
    Pour Clé AWS KMS, saisissez l’Amazon Resource Name (ARN) de votre clé AWS KMS.
    Pour Clé de compartiment, sélectionnez Activer pour une stratégie de clé avec la clé de compartiment activée et Désactiver pour une stratégie de clé avec une clé de compartiment inactivée.
  6. Sélectionnez Enregistrer les modifications.
  7. Pour vérifier que vous avez mis à jour les fichiers CRL, suivez les étapes décrites dans la section Tester votre CRL.
  8. Pour vérifier que les fichiers CRL sont correctement chiffrés, exécutez la commande de l'interface de ligne de commande AWS head-object :
aws s3api head-object --bucket your-crl-storage-bucket --key crl/CA_ID.crl

Remarque : Remplacez your-crl-storage-bucket par votre compartiment et CA_ID par votre ID de CA. Pour vérifier vos paramètres de chiffrement, consultez les champs SSEKMSKeyId et BucketKeyEnabled.

Informations connexes

Configurer une CRL pour AWS Private CA

Comment créer et stocker en toute sécurité votre CRL pour ACM Private CA

Bonnes pratiques de sécurité pour Amazon S3

Bonnes pratiques d'ACM Private CA

AWS OFFICIELA mis à jour il y a un an