AWS 프라이빗 CA를 사용하여 Application Load Balancer에서 mTL을 구성하려면 어떻게 해야 합니까?
Application Load Balancer에서 상호 TLS(mTLS)를 인증하는 데 사용할 수 있는 프라이빗 인증 기관(프라이빗 CA)을 클라이언트에 발급하려고 합니다.
해결 방법
다음 단계에 따라 AWS Management Console에서 mTL 인증을 위한 프라이빗 CA를 생성하십시오.
HTTPS 리스너를 사용하여 애플리케이션 로드 밸런서 생성
애플리케이션 로드 밸런서를 위한 HTTPS 리스너를 생성합니다.
AWS 프라이빗 CA를 사용하여 루트 CA 인증서 번들 생성
- AWS Management Console에 로그인합니다.
- ACM Private Certificate Authority로 이동합니다.
- 프라이빗 CA 생성을 선택합니다. 루트 CA를 선택한 다음 세부 정보를 입력합니다. 나머지는 기본값으로 유지합니다. 프라이빗 CA를 선택합니다.
- 작업을 선택합니다. 그런 다음 CA 인증서 설치를 선택합니다.
- 만료를 선택한 다음 선택을 확인합니다. 그런 다음 설치를 선택합니다.
AWS 프라이빗 CA를 사용하여 두 개의 하위 CA 생성
루트 CA를 설치한 후 하위 CA를 두 개 더 생성합니다. 그런 다음 이러한 CA를 사용하여 최종 엔터티 인증서를 발급합니다.
참고: Application Load Balancer에서 최대 4개의 하위 인증서를 생성할 수 있습니다. CA 계층 구조에 대한 자세한 내용은 CA 계층 구조 설계를 참조하십시오.
하위 CA1 생성
AWS Management Console에서 다음 단계를 완료하십시오.
- AWS Private Certificate Authority로 이동한 다음 프라이빗 CA 생성을 선택합니다.
- 하위 CA를 선택한 다음 세부 정보를 입력합니다. CA 생성을 선택합니다.
참고: 세부 정보를 위해 필드에 다른 주체 고유 CA 이름을 입력하십시오(예: 일반 이름(CN)을 SubCA1로 입력). - 작업을 선택합니다. 그런 다음 CA 인증서 설치를 선택합니다.
- 루트 CA를 상위 CA로 선택합니다.
- 만료를 선택하고 선택을 확인합니다. 그런 다음 설치를 선택합니다.
참고: 만료일이 루트 CA에 할당된 날짜보다 낮은지 확인하십시오. - 하위 인증서를 더 추가하려면 경로 길이를 1 또는 2로 선택합니다. 또는 사용 사례에 따라 0으로 유지합니다.
하위 CA2 생성
다음 단계를 완료합니다.
- 이전에 사용한 1~3단계를 수행하여 하위 CA1을 생성합니다.
- 하위 CA1을 상위 CA로 선택합니다.
참고: 2단계에서도 세부 정보를 위해 필드에 다른 주체 고유 CA 이름을 입력하십시오(예: 일반 이름(CN)을 SubCA2로 입력). - 만료를 지정하고 확인합니다. 그런 다음 설치를 선택합니다.
참고: 만료일이 하위 CA1에 지정된 만료일보다 낮은지 확인하십시오.
이제 하위 CA1(레벨 2)에 서명하는 루트 CA(레벨 1)가 생겼습니다. 그리고 하위 CA1이 차례로 하위 CA2(레벨 3)에 서명합니다.
참고: Application Load Balancer의 최대 인증서 체인 깊이는 4입니다.
인증서 번들을 Amazon Simple Storage Service에 업로드
AWS Management Console에서 다음 단계를 완료하십시오.
- CABundle.pem이라는 파일을 생성한 다음 하위 CA2에서 인증서 체인과 인증서 본문을 복사합니다.(인증서 체인, 인증서 본문 순서대로)
- 필요한 정책을 사용하여 Amazon S3 버킷을 생성합니다. 예를 들면 다음과 같습니다.
참고: <AccountID:certificate-authority/abcde-efgh-45dd-b564-1234abcd>를 계정 번호와 하위 CA2의 Amazon 리소스 이름(ARN)으로 바꾸십시오.{ "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" } } } ] }
- CABundle.pem을 Amazon 3 버킷에 업로드합니다.
트러스트 스토어를 생성한 다음 mTLS가 활성화된 리스너와 연결
프라이빗 CA를 사용하여 클라이언트 인증서 발급
-
다음 AWS Command Line Interface(AWS CLI) 명령을 사용하여 인증서 서명 요청(CSR)을 생성합니다.
openssl req -out client_csr1.pem -new -newkey rsa:2048 -nodes -keyout client_private-key1.pem
이 명령은 CSR과 프라이빗 키를 반환합니다.
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오. -
방금 생성한 AWS 프라이빗 CA를 사용하여 인증서를 발급합니다.
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"
이 명령은 인증서의 ARN을 반환합니다.
-
인증서 발급:
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
MTL 테스트
요청에서 생성한 클라이언트 인증서를 전달합니다. 프로세스가 성공하면 양방향 인증을 완료한 것입니다. 로드 밸런서는 클라이언트가 로드 밸런서의 인증서를 인증하는 동시에 클라이언트 인증서를 인증합니다.
curl -ivk --cert client_cert1.cert --key client_private-key1.pem https://<elb-name>
테스트 인증서 해지
발급한 인증서가 손상되었거나 더 이상 필요하지 않은 경우 인증서 해지 목록(CRL)을 사용하여 인증서를 해지하십시오. AWS 프라이빗 CA를 사용하는 경우 CRL 배포를 활성화하면 .CRL 파일이 자동으로 생성됩니다.
AWS Management Console에서 CRL 배포를 활성화하려면:
- 하위 CA2로 이동합니다.
- 해지 구성을 선택한 다음 CRL 배포 활성화를 선택합니다.
- 이전과 동일한 S3 버킷을 사용하고 생성을 선택합니다. 이렇게 하면 S3 버킷 정책이 올바르게 설정된 경우 acm-pca-permission-test-key-private라는 테스트 파일이 생성됩니다.
인증서 해지
인증서를 해지하려면 먼저 발급된 인증서의 일련 번호를 받아야 합니다.
-
일련 번호를 가져오려면 다음 AWS CLI 명령을 사용합니다.
openssl x509 -in client_cert1.cert -text -noout
-
인증서 해지 명령 실행
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"
이 작업은 S3 버킷에 .CRL 파일을 생성합니다. .CRL 파일을 생성하는 데 최대 30분이 걸릴 수 있다는 점에 유의하십시오.
CRL 파일로 트러스트 스토어 업데이트
파일 형식 변환
AWS CLI 명령을 사용하여 파일 형식을 변경합니다.
S3 버킷의 .CRL을 .pem 형식으로 변환합니다.
참고: Application Load Balancer는 .pem 형식의 CRL만 지원합니다.
openssl crl -in revoked.crl -inform DER -out revoked_crl_in_pem.crl
트러스트 스토어 업데이트
다음 단계를 완료하여 AWS Management Console에서 트러스트 스토어를 업데이트합니다.
- AWS Management Console에 로그인합니다.
- 트러스트 스토어로 이동합니다.
- 인증서 해지 목록으로 이동합니다. 해지 목록 추가를 선택합니다.
- S3 찾아보기를 선택한 다음 이전에 사용한 S3 버킷에서 .pem 형식의 .CRL 파일을 선택합니다.
- 업로드를 선택합니다.
참고: mTLS 테스트 단계를 다시 실행합니다. 참고로 발급한 인증서를 해지했기 때문에 mTL 인증이 실패합니다.
프라이빗 CA를 사용하여 클라이언트 인증서를 발급하는 단계를 반복하여 여러 인증서를 발급하고 mTL을 확인할 수도 있습니다.
관련 콘텐츠
- 질문됨 7달 전lg...
- 질문됨 16일 전lg...
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 2년 전