API Gateway API에 대한 상호 TLS 인증을 구성할 때 타사에서 발급한 클라이언트 인증서를 사용하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2022년 12월 16일
Amazon API Gateway API에 대한 상호 전송 계층 보안(TLS) 인증을 구성할 때 타사에서 발급한 클라이언트 인증서를 사용하고 싶습니다.
해결 방법
TLS 인증을 사용하는 API Gateway용 타사 서명 클라이언트 인증서를 사용하려면 다음 단계를 따르세요.
- 타사에서 서명한 인증서를 사용할 신뢰 저장소를 생성합니다.
- API 게이트웨이 API를 위한 사용자 지정 도메인 이름 및 API 매핑을 생성합니다.
- DNS 레코드를 생성하여 사용자 지정 도메인 이름을 API Gateway에 매핑합니다.
- 기본 엔드포인트를 비활성화합니다.
- API를 테스트합니다.
참고:
- AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하는 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인합니다.
- 상호 TLS는 프라이빗 API에 지원되지 않습니다.
타사에서 서명한 인증서를 사용할 신뢰 저장소 생성
1. RootCA를 생성합니다. RootCA는 클라이언트 인증서를 발급하는 데 사용됩니다.
openssl genrsa -out RootCA.key 4096
openssl req -new -x509 -days 3650 -key RootCA.key -out RootCA.pem
2. 필수 필드를 채우고 도메인 이름을 입력합니다.
3. 클라이언트 인증서 프라이빗 키, 인증서 서명 요청(CSR) 및 클라이언트 인증서를 생성합니다.
openssl genrsa -out my_client.key 2048
openssl req -new -key my_client.key -out my_client.csr
4. 이전에 만든 CA를 사용하여 클라이언트 인증서에 서명합니다.
openssl x509 -req -in my_client.csr -CA RootCA.pem -CAkey RootCA.key -set_serial 01 -out my_client.pem -days 3650 -sha256
5. truststore.pem 파일을 저장할 Amazon Simple Storage Service(Amazon S3) 버킷을 생성합니다.
6. Amazon S3 버킷 신뢰 저장소에 RootCA.pem을 업로드합니다.
7. (선택 사항) 중간 CA 인증서에서 루트 CA로 인증서 체인 파일을 생성합니다.
Cat Intermediate.pem ca.pem >ca-chain.pem.
자세한 내용은 신뢰 저장소 구성을 참조하세요.
API 게이트웨이 API를 위한 사용자 지정 도메인 이름 및 API 매핑 생성
참고: 키 크기가 2048비트인 인증서만 API Gateway에서 볼 수 있습니다. 인증서 크기는 2048비트를 초과할 수 없습니다.
1. API Gateway 콘솔을 열고 사용자 지정 도메인 이름을 선택합니다.
2. 도메인 이름(Domain names)에 도메인 이름을 입력한 다음 생성(Create)을 선택합니다.
3. 도메인 이름(Domain name)에 도메인 이름을 입력합니다.
4. 최소 TLS 버전(Minimum TLS version)에서 TLS 1.2를 선택합니다.
5. 상호 TLS 인증을 활성화합니다.
6. 신뢰 스토어 URI(Truststore URI)에 이전에 생성한 Amazon S3 URI를 입력합니다.
7. 엔드포인트 구성(Endpoint configuration)에서 리전(Regional)을 선택합니다.
8. 인증서 유형(Certificate type)에서 인증서 유형을 선택한 다음 도메인 이름 생성(Create domain name)을 선택합니다.
9. 사용자 지정 도메인 이름을 선택한 다음 API 매핑 구성(Configure API mappings)을 선택합니다.
10. 새 매핑 추가(Add new mapping)를 선택합니다.
11. 매핑할 API, 단계(Stage) 및 경로(Path)를 선택한 다음 저장(Save)을 선택합니다.
자세한 내용은 API Gateway API에 사용자 지정 도메인 이름을 설정하려면 어떻게 해야 합니까?을 참조하세요.
DNS 레코드를 생성하여 사용자 지정 도메인 이름을 API Gateway에 매핑
DNS 레코드를 생성하여 사용자 지정 도메인 이름이 API Gateway 지역 도메인 이름을 가리키도록 합니다. 이렇게 하면 사용자 지정 도메인 이름에 바인딩된 트래픽을 API의 지역 호스트 이름으로 라우팅할 수 있습니다. DNS 레코드는 CNAME 또는 ‘A 별칭’ 유형일 수 있습니다.
자세한 내용은 트래픽을 API Gateway 엔드포인트로 라우팅하도록 Route 53 구성을 참조하세요.
기본 엔드포인트 비활성화
기본적으로 클라이언트는 API Gateway가 API용으로 생성하는 execute-api 엔드포인트를 사용하여 API를 호출할 수 있습니다. 클라이언트가 사용자 지정 도메인 이름만 사용하여 API에 액세스할 수 있도록 기본 execute-api 엔드포인트를 비활성화합니다.
HTTP API의 경우 HTTP API에 대한 기본 엔드포인트 비활성화를 참조하세요.
REST API의 경우 REST API에 대한 기본 엔드포인트 비활성화를 참조하세요.
API 테스트
요청의 일부로 클라이언트 인증서를 전송할 API를 --key 및 --cert 파라미터로 테스트합니다.
$ curl -v https://{YourCustomDomainName}/{resource} --key my_client.key --cert my_client.pem
참고: 성공적인 요청을 위해서는 프라이빗 키 my_client.key 및 클라이언트 인증서 my_client.pem이 포함되어야 합니다.