내용으로 건너뛰기

AWS Private CA용 CRL을 생성하려면 어떻게 해야 하나요?

8분 분량
0

AWS Private Certificate Authority를 위한 인증서 취소 목록(CRL) 을 생성하고 싶습니다.

해결 방법

CRL을 생성할 경우 AWS Private CA는 CRL을 사용자가 지정한 Amazon Simple Storage Service(Amazon S3) 버킷에 배치합니다. S3 버킷에 대한 액세스를 제한하려면 권한 정책을 사용하십시오. AWS Private CA가 버킷에 객체를 넣을 수 있도록 하려면 버킷 정책에 Put 권한을 포함하십시오. 버킷에서 메타데이터를 검색하려면 Get 권한을 포함하십시오.

참고: 새 S3 버킷을 구성하면 기본적으로 Block Public Access(BPA)가 활성화됩니다.

AWS Private CA용 CRL을 생성하려면 다음 단계를 완료하십시오.

새 Amazon S3 버킷 생성

다음 단계를 완료합니다.

  1. Amazon S3 콘솔을 엽니다.
  2. 버킷 생성을 선택합니다.
  3. 버킷 이름에 버킷 이름을 입력합니다.
  4. 객체 소유권에서 ACL 비활성화를 선택한 다음 버킷 생성을 선택합니다.
  5. 버킷에서 버킷을 선택합니다.
  6. 권한 탭을 선택합니다.
  7. 버킷 정책에서 편집을 선택합니다.
  8. 정책에서 다음 정책을 입력합니다.
    {  
    "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"
            }
          }
        }
      ]
    }
    참고: your-crl-storage-bucket을 버킷으로 바꾸고 계정을 AWS 계정으로 바꿉니다.
  9. 변경 사항 저장을 선택합니다.

자세한 내용은 버킷 생성을 참조하십시오.

CloudFront 배포 생성

다음 단계를 완료합니다.

  1. Amazon CloudFront 콘솔을 엽니다.

  2. 배포 생성을 선택합니다.

  3. 오리진 도메인에 대해 S3 버킷이 포함된 도메인 이름을 선택합니다. your-crl-storage-bucket.s3.region.amazonaws.com과 같은 명명 규칙을 사용하십시오.

  4. 오리진 액세스에 대해 **오리진 액세스 제어 설정(권장)**을 선택합니다.

  5. 오리진 액세스 제어에 대해 새 OAC 생성을 선택한 다음 생성을 선택합니다.

  6. **Web Application Firewall(WAF)**에 대해서는 보안 보호 활성화 안 함을 선택합니다. 사용 사례에 필요한 경우 보안 보호 기능을 활성화합니다.

  7. 배포 생성을 선택합니다.

  8. “S3 버킷 정책을 업데이트해야 합니다.” 배너가 나타나면 정책 복사를 선택합니다. 그런 다음, 정책을 저장합니다.

    정책 예시:

    {
      "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"
            }
          }
        }
      ]
    }

CA 생성

이미 AWS Private CA를 사용하여 인증 기관(CA)을 생성한 경우, CA에 대한 CRL 구성으로 진행합니다.

CA를 생성하려면 다음 단계를 완료하십시오.

  1. AWS 리전에서 AWS Private CA 콘솔을 엽니다.
  2. 프라빗 CA 생성을 선택합니다.
  3. 다음 CA 파라미터를 구성합니다.
    중요: CA를 생성한 후에는 모드, CA 유형, 주체 고유 이름키 알고리즘을 업데이트할 수 없습니다.
    모드에 대해 범용을 선택합니다.
    CA 유형 옵션에 대해 루트를 선택합니다.
    주체 고유 이름 옵션에 대해 CA 이름을 입력한 다음 다른 필드를 구성합니다.
    키 알고리즘 옵션에 대해 RSA 2048을 선택합니다.
    인증서 해지 옵션에 대해 CRLOCSP를 지웁니다.
    CA 권한 옵션에 대해 ACM 액세스 권한을 부여하여 이 계정에서 요청한 인증서 갱신을 선택합니다.
  4. 요금 승인을 선택한 다음, CA 생성을 선택합니다.
  5. CA의 상태가 보류 중인 인증서인지 확인합니다.
  6. 작업에서 CA 인증서 설치를 선택합니다.
  7. CA 인증서의 유효성서명 알고리즘을 구성합니다.

CA에 대한 CRL 구성

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

  1. 다음 정보가 포함된 CRL 구성 JSON 파일을 생성합니다.
    {  
    "CrlConfiguration": {
        "Enabled": true,
        "ExpirationInDays": 7,
        "S3ObjectAcl": "BUCKET_OWNER_FULL_CONTROL",
        "CustomCname":"abcdef012345.cloudfront.net",
        "S3BucketName": "your-crl-storage-bucket"
      }
    }
    참고: your-crl-storage-bucket을 버킷 이름으로 바꾸십시오. 또한 ExpirationInDays 값을 업데이트하여 CRL의 유효 기간을 변경할 수 있습니다.
  2. AWS Private CA가 버킷에 CRL 파일을 게시할 수 있도록 하려면 버킷 정책을 업데이트합니다.
    {
      "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"
            }
          }
        }
      ]
    }
    참고: your-crl-storage-bucket을 해당 버킷으로, region을 해당 리전으로, account를 해당 계정으로, CA_ID를 CA ID로 바꿉니다.
  3. CloudFront 배포에서 CRL 파일을 가져올 수 있도록 하려면 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"
            }
          }
        }
      ]
    }
    참고: your-crl-storage-bucket을 해당 버킷으로, region을 해당 리전으로, account를 해당 계정으로, CA_ID를 CA ID로, DISTRIBUTION_ID를 CloudFront 배포로 바꿉니다.
    자세한 내용은 Amazon S3의 CRL에 대한 액세스 정책S3 버킷에 액세스할 수 있는 오리진 액세스 제어 권한 부여를 참조하십시오.
  4. CA를 업데이트하고 CRL을 활성화하려면 update-certificate-authority AWS CLI 명령을 실행합니다.
    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
    참고: region을 해당 리전으로, account을 해당 계정으로, CA_ID를 해당 CA ID로 바꾸십시오.

CRL 테스트

CRL이 게시되어 있으며 액세스 가능한지 확인하려면 다음 단계를 완료하십시오.

  1. ACM 콘솔을 엽니다.
  2. 인증서 요청을 선택합니다.
  3. 프라이빗 인증서 요청을 선택하고 다음을 선택합니다.
  4. 인증 기관에서 CA를 선택합니다.
  5. 정규화된 도메인 이름에 도메인 이름을 입력합니다.
    **참고:**프라이빗 인증서에는 도메인 확인 단계가 필요 없습니다.
  6. 필요한 권한 없이는 ACM이 이 인증 기관의 프라이빗 인증서 발급을 갱신할 수 없다는 점을 이해합니다를 선택합니다.
  7. 요청을 선택합니다.
  8. 프라이빗 인증서의 세부 정보 페이지에서 상태발급됨인지 확인합니다.
  9. 프라이빗 인증서 일련 번호를 기록해 둡니다.
  10. 프라이빗 인증서를 취소하려면 revoke-certificate AWS CLI 명령을 실행합니다.
aws acm-pca revoke-certificate --certificate-authority-arn arn:aws:acm-pca:region:account:certificate-authority/CA_ID --certificate-serial SERIAL --revocation-reason UNSPECIFIED

참고: region을 해당 리전으로, account를 해당 계정으로, CA_ID를 해당 CA ID로, SERIAL을 프라이빗 인증서의 일련 번호로 바꾸십시오. UNSECTIFIED구체적인 취소 사유로 바꾸십시오.
이 명령을 실행하면 AWS CloudTrail이 RevokeCertificate 이벤트를 기록합니다. Amazon CloudWatch 콘솔을 엽니다. 모든 지표를 선택한 다음 ACMPrivateCA를 선택합니다. PrivateCAMetrics를 선택합니다. CA에 대해 CRLGenerated 지표를 검토합니다. 지표의 데이터 포인트는 RevokeCertificate 이벤트의 eventTime 이후에 기록됩니다.
참고: CRL 파일은 취소 후 약 30분이 지나면 업데이트됩니다. 자세한 내용은 AWS Private CA 인증서 취소 방법 계획을 참조하십시오. CRL 파일에 액세스하려면 CloudFront 배포를 사용합니다.

URL 예시:

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

참고: example을 해당 CloudFront 배포 도메인 이름으로 바꾸고 CA_ID를 해당 인증 기관 ID로 바꾸십시오. 배포 도메인 이름은 CloudFront 콘솔에서 확인할 수 있습니다. 취소된 일련 번호가 명령 출력에 있는지 확인하려면 CRL 파일을 다운로드하여 검토합니다.

(선택 사항) AWS Key Management Service(AWS KMS)를 사용하여 CRL 암호화

CRL이 포함된 버킷에서 AWS KMS(SSE-KMS)를 사용하여 서버 측 암호화를 활성화할 수 있습니다. AWS Private CA는 AWS 관리형 KMS 키에 대한 CRL 파일 암호화를 지원하지 않습니다. 따라서 사용자가 고객 관리형 KMS 키를 만들어야 합니다. Amazon S3의 SSE-KMS에 대한 자세한 내용은 AWS KMS 키(SSE-KMS)를 사용한 서버 측 암호화 사용을 참조하십시오.

다음 단계를 완료합니다.

  1. S3 버킷과 동일한 리전에서 AWS KMS 콘솔을 엽니다.
  2. 고객 관리형 키를 선택한 다음 키 생성을 선택합니다.
  3. 구성 키에서 기본값을 유지하고 다음을 선택합니다.
  4. 레이블 추가에서 별칭에 키 별칭을 입력하고 설명에 설명을 입력합니다.
  5. 키 관리 권한 정의에서 현재 AWS Identity and Access Management(IAM) 사용자 또는 역할을 입력하고 다음을 선택합니다.
  6. 키 사용 권한 정의에서 다음을 선택합니다.
  7. 구성을 확인한 다음 완료를 선택합니다.
  8. 고객 관리형 키에서 AWS KMS 키를 선택합니다.
  9. 키 정책에서 정책 보기로 전환을 선택합니다.
  10. 편집을 선택합니다.
  11. CRL 암호화 및 배포에 대한 새로운 키 정책을 입력합니다.

버킷 키가 활성화된 키 정책의 경우, 다음 정책을 입력합니다.

{  
"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"
        }
      }
    }
  ]
}

참고: account를 해당 계정으로, your-role-name을 해당 IAM 역할로, your-user-name을 해당 IAM 사용자로, your-crl-storage-bucket을 해당 버킷으로, DISTRIBUTION_ID를 해당 CloudFront 배포로 바꾸십시오.

활성화된 버킷 키가 없는 키 정책을 생성하려면 kms:EncryptionContext:aws:s3:arn 조건 키의 값을 특정 객체 키로 바꾸십시오.

  1. 변경 사항 저장을 선택합니다.
  2. Amazon S3 콘솔을 엽니다.
  3. 버킷을 선택한 다음 속성을 선택합니다.
  4. 기본 암호화에서 편집을 선택합니다.
  5. 다음 암호화 파라미터를 입력합니다.
    암호화 유형에서 **AWS Key Management Service 키를 사용한 서버 측 암호화(SSE-KME)**를 선택합니다.
    AWS KMS 키에 AWS KMS 키의 Amazon 리소스 이름(ARN) 을 입력합니다.
    버킷 키의 경우, 버킷 키가 활성화된 키 정책에 대해 사용을 선택하고, 버킷 키가 비활성화된 키 정책에 대해 사용 안함을 선택합니다.
  6. 변경 사항 저장을 선택합니다.
  7. CRL 파일을 업데이트했는지 확인하려면 CRL 테스트 섹션의 단계를 완료합니다.
  8. CRL 파일이 올바르게 암호화되었는지 확인하려면 head-object AWS CLI 명령을 실행합니다.
aws s3api head-object --bucket your-crl-storage-bucket --key crl/CA_ID.crl

참고: your-crl-storage-bucket을 해당 버킷으로 바꾸고 CA_ID를 해당 CA ID로 바꿉니다. 암호화 설정을 확인하려면 SSEKMSKeyIdBucketKeyEnabled 필드를 검토합니다.

관련 정보

AWS Private CA용 CRL 설정

ACM Private CA용 CRL을 안전하게 생성하고 저장하는 방법

Amazon S3 보안 모범 사례

ACM Private CA 모범 사례

AWS 공식업데이트됨 일 년 전