트러스트 스토어 및 인증서 관리
트러스트 스토어를 생성하고 구성하는 것은 CloudFront와의 상호 TLS 인증을 구현하기 위한 필수 요구 사항입니다. 트러스트 스토어에는 CloudFront가 인증 프로세스 중에 클라이언트 인증서를 검증하는 데 사용하는 인증 기관(CA) 인증서가 포함되어 있습니다.
트러스트 스토어란 무엇인가요?
트러스트 스토어는 CloudFront가 상호 TLS 인증 중에 클라이언트 인증서를 검증하는 데 사용하는 CA 인증서의 리포지토리입니다. 트러스트 스토어에는 클라이언트 인증서를 인증하기 위한 신뢰 체인을 구성하는 루트 및 중간 CA 인증서가 포함되어 있습니다.
CloudFront와 상호 TLS를 구현하면 트러스트 스토어는 유효한 클라이언트 인증서를 발급하기 위해 신뢰할 수 있는 인증 기관을 정의합니다. CloudFront는 TLS 핸드셰이크 중에 트러스트 스토어에 대해 각 클라이언트 인증서를 검증합니다. 트러스트 스토어의 CA 중 하나에 연결된 인증서를 제공하는 클라이언트만 성공적으로 인증됩니다.
CloudFront의 트러스트 스토어는 여러 배포와 연결할 수 있는 계정 수준 리소스입니다. 이를 통해 CA 인증서 관리를 간소화하면서 전체 CloudFront 배포에서 일관된 인증서 검증 정책을 유지할 수 있습니다.
인증 기관 지원
CloudFront는 AWS 프라이빗 인증 기관과 타사 프라이빗 인증 기관에서 발급한 인증서를 지원합니다. 이러한 유연성을 통해 기존 인증서 인프라를 사용하거나 조직 요구 사항에 따라 AWS 관리형 인증서 서비스를 활용할 수 있습니다.
-
AWS 프라이빗 인증 기관: 관리형 프라이빗 인증 기관 서비스를 제공하는 AWS Private CA에서 발급한 인증서를 사용할 수 있습니다. 이 통합은 인증서 수명 주기 관리를 간소화하고 다른 AWS 서비스와의 원활한 통합을 제공합니다.
-
타사 프라이빗 인증 기관: 엔터프라이즈 CA 또는 기타 타사 인증서 공급자를 포함하여 기존 프라이빗 인증 기관 인프라의 인증서를 사용할 수도 있습니다. 이렇게 하면 CloudFront의 mTLS 기능을 추가하면서 현재 인증서 관리 프로세스를 유지할 수 있습니다.
인증서 요구 사항 및 사양
트러스트 스토어에는 포함된 CA 인증서에 대한 특정 요구 사항이 있습니다.
CA 인증서 형식 요구 사항
-
형식: PEM(Privacy Enhanced Mail) 형식
-
콘텐츠 경계: 인증서는 -----BEGIN CERTIFICATE----- 및 -----END CERTIFICATE----- 경계 내에 묶여야 합니다.
-
주석: 앞에는 # 문자를 붙여야 하며 - 문자를 포함할 수 없습니다.
-
줄 바꿈: 인증서 사이에 빈 줄이 허용되지 않습니다.
지원되는 인증서 사양
-
인증서 유형: X.509v3
-
퍼블릭 키 유형:
RSA 2048, RSA 4096
ECDSA: secp256r1, secp384r1
-
서명 알고리즘:
RSA를 사용하는 SHA256, SHA384, SHA512
EC를 사용하는 SHA256, SHA384, SHA512
MGF1 지원 RSASSA-PSS를 사용하는 SHA256, SHA384, SHA512
예제 인증서 번들 형식
여러 인증서(PEM 인코딩):
# Root CA Certificate -----BEGIN CERTIFICATE----- MIIDXTCCAkWgAwIBAgIJAKoK/OvD/XqiMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX aWRnaXRzIFB0eSBMdGQwHhcNMTcwNzEyMTU0NzQ4WhcNMjcwNzEwMTU0NzQ4WjBF MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAuuExKvY1xzHFylsHiuowqpmzs7rEcuuylOuEszpFp+BtXh0ZuEtts9LP -----END CERTIFICATE----- # Intermediate CA Certificate -----BEGIN CERTIFICATE----- MIIDXTCCAkWgAwIBAgIJAKoK/OvD/XqjMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX aWRnaXRzIFB0eSBMdGQwHhcNMTcwNzEyMTU0NzQ4WhcNMjcwNzEwMTU0NzQ4WjBF MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAuuExKvY1xzHFylsHiuowqpmzs7rEcuuylOuEszpFp+BtXh0ZuEtts9LP -----END CERTIFICATE-----
트러스트 스토어 생성
트러스트 스토어를 생성하기 전에 PEM 형식의 CA 인증서 번들을 Amazon S3 버킷에 업로드해야 합니다. 인증서 번들에는 클라이언트 인증서를 검증하는 데 필요한 신뢰할 수 있는 모든 루트 및 중간 CA 인증서가 포함되어야 합니다.
CA 인증서 번들은 트러스트 스토어를 생성할 때 S3에서 한 번만 읽습니다. CA 인증서 번들을 나중에 변경하는 경우 트러스트 스토어를 수동으로 업데이트해야 합니다. 트러스트 스토어와 S3 CA 인증서 번들 간에 동기화가 유지되지 않습니다.
사전 조건
-
Amazon S3 버킷에 업로드된 인증 기관(CA)의 인증서 번들
-
CloudFront 리소스를 생성하는 데 필요한 권한
트러스트 스토어를 생성하려면(콘솔)
AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudfront/v4/home
에서 CloudFront 콘솔을 엽니다. -
탐색 창에서 트러스트 스토어를 선택합니다.
-
트러스트 스토어 생성을 선택합니다.
-
트러스트 스토어 이름에 트러스트 스토어의 이름을 입력합니다.
-
인증 기관(CA) 번들의 경우 PEM 형식 CA 인증서 번들에 Amazon S3 경로를 입력합니다.
-
트러스트 스토어 생성을 선택합니다.
트러스트 스토어를 생성하려면(AWS CLI)
aws cloudfront create-trust-store \ --name MyTrustStore \ --certificate-authority-bundle-s3-location Bucket=my-bucket,Key=ca-bundle.pem \ --tags Items=[{Key=Environment,Value=Production}]
트러스트 스토어를 배포와 연결
트러스트 스토어를 생성한 후에는 이를 CloudFront 배포와 연결하여 상호 TLS 인증을 활성화해야 합니다.
사전 조건
-
HTTPS 전용 뷰어 프로토콜 정책이 활성화되고 HTTP3 지원이 비활성화된 기존 CloudFront 배포입니다.
트러스트 스토어를 연결하려면(콘솔)
CloudFront 콘솔 내에서 트러스트 스토어 세부 정보 페이지 또는 배포 설정 페이지를 통해 트러스트 스토어를 연결할 수 있는 두 가지 방법이 있습니다.
트러스트 스토어 세부 정보 페이지를 통해 트러스트 스토어 연결:
AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudfront/v4/home
에서 CloudFront 콘솔을 엽니다. -
탐색 창에서 트러스트 스토어를 선택합니다.
-
연결할 트러스트 스토어의 이름을 선택합니다.
-
배포에 연결을 선택합니다.
-
사용 가능한 뷰어 mTLS 옵션을 구성합니다.
-
클라이언트 인증서 검증 모드: 필수 모드와 선택 모드 중에서 선택합니다. 필수 모드에서는 모든 클라이언트가 인증서를 제시해야 합니다. 선택적 모드에서는 인증서를 제공하는 클라이언트가 검증되는 반면, 인증서를 제공하지 않는 클라이언트는 액세스가 허용됩니다.
-
트러스트 스토어 CA 이름 알림: TLS 핸드셰이크 중에 트러스트 스토어의 CA 이름을 클라이언트에 알릴지 여부를 선택합니다.
-
인증서 만료 날짜 무시: 만료된 인증서와의 연결을 허용할지 여부를 선택합니다(다른 검증 기준은 계속 적용됨).
-
연결 함수: 선택적 연결 함수를 연결하여 다른 사용자 지정 기준에 따라 연결을 허용/거부할 수 있습니다.
-
-
트러스트 스토어와 연결할 배포를 하나 이상 선택합니다. HTTP3가 비활성화되고 HTTPS 전용 캐시 동작이 있는 배포만 뷰어 mTLS를 지원할 수 있습니다.
-
연결을 선택합니다.
배포 설정 페이지를 통해 트러스트 스토어 연결:
AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudfront/v4/home
에서 CloudFront 콘솔을 엽니다. -
연결하려는 배포를 선택합니다.
-
일반 탭의 설정 컨테이너에서 오른쪽 상단 모서리에 있는 편집을 선택합니다.
-
페이지 하단까지 아래로 스크롤하여 연결 컨테이너 내에서 뷰어 mTLS 스위치를 켭니다.
-
사용 가능한 뷰어 mTLS 옵션을 구성합니다.
-
클라이언트 인증서 검증 모드: 필수 모드와 선택 모드 중에서 선택합니다. 필수 모드에서는 모든 클라이언트가 인증서를 제시해야 합니다. 선택적 모드에서는 인증서를 제공하는 클라이언트가 검증되는 반면, 인증서를 제공하지 않는 클라이언트는 액세스가 허용됩니다.
-
트러스트 스토어 CA 이름 알림: TLS 핸드셰이크 중에 트러스트 스토어의 CA 이름을 클라이언트에 알릴지 여부를 선택합니다.
-
인증서 만료 날짜 무시: 만료된 인증서와의 연결을 허용할지 여부를 선택합니다(다른 검증 기준은 계속 적용됨).
-
연결 함수: 선택적 연결 함수를 연결하여 다른 사용자 지정 기준에 따라 연결을 허용/거부할 수 있습니다.
-
-
오른쪽 하단 모서리에서 변경 사항 저장을 선택합니다.
트러스트 스토어를 연결하려면(AWS CLI)
트러스트 스토어는 DistributionConfig.ViewerMtlsConfig 속성을 통해 배포에 연결할 수 있습니다. 즉, 먼저 배포 구성을 가져온 다음 후속 UpdateDistribution 요청에서 ViewerMtlsConfig를 제공해야 합니다.
// First fetch the distribution aws cloudfront get-distribution {DISTRIBUTION_ID} // Update the distribution config, for example: Distribution config, file://distConf.json: { ...other fields, ViewerMtlsConfig: { Mode: 'required', TrustStoreConfig: { AdvertiseTrustStoreCaNames: false, IgnoreCertificateExpiry: true, TrustStoreId: {TRUST_STORE_ID} } } } aws cloudfront update-distribution \ --id {DISTRIBUTION_ID} \ --if-match {ETAG} \ --distribution-config file://distConf.json
트러스트 스토어 관리
트러스트 스토어 세부 정보 보기
AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudfront/v4/home
에서 CloudFront 콘솔을 엽니다. -
탐색 창에서 트러스트 스토어를 선택합니다.
-
트러스트 스토어 이름을 선택하여 세부 정보 페이지를 봅니다.
세부 정보 페이지에는 다음이 표시됩니다.
트러스트 스토어 이름 및 ID
CA 인증서 수
생성 날짜 및 마지막 수정 날짜
연결된 배포
Tags
트러스트 스토어 수정
CA 인증서 번들을 교체하려면:
AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudfront/v4/home
에서 CloudFront 콘솔을 엽니다. -
탐색 창에서 트러스트 스토어를 선택합니다.
-
트러스트 스토어의 이름을 선택합니다.
-
작업을 선택한 다음 편집을 선택합니다.
-
인증 기관(CA) 번들에 업데이트된 CA 번들 PEM 파일의 Amazon S3 위치를 입력합니다.
-
트러스트 스토어 업데이트를 선택합니다.
트러스트 스토어 삭제
사전 조건: 먼저 모든 CloudFront 배포에서 트러스트 스토어의 연결을 해제해야 합니다.
AWS Management Console에 로그인한 다음 https://console.aws.amazon.com/cloudfront/v4/home
에서 CloudFront 콘솔을 엽니다. -
탐색 창에서 트러스트 스토어를 선택합니다.
-
트러스트 스토어의 이름을 선택합니다.
-
트러스트 스토어 삭제를 선택합니다.
-
[삭제]를 선택하여 확인합니다.
다음 단계
트러스트 스토어를 생성하고 CloudFront 배포와 연결한 후 배포에서 상호 TLS 인증을 활성화하고 인증서 헤더를 오리진에 전달하는 등의 추가 설정을 구성할 수 있습니다. 배포에서 mTLS를 활성화하는 방법에 대한 자세한 지침은 CloudFront 배포에 상호 TLS 활성화 섹션을 참조하세요.