Amazon API Gateway API에 대한 상호 전송 계층 보안(TLS) 인증을 구성할 때 타사에서 발급한 클라이언트 인증서를 사용하고 싶습니다.
해결 방법
타사 서명 클라이언트 인증서를 TLS 인증이 있는 API 게이트웨이에 사용하려면 다음 단계를 따르세요.
-
타사 서명 인증서를 사용할 신뢰 저장소를 만듭니다.
-
API 게이트웨이 API에 대한 사용자 지정 도메인 이름 및 API 매핑을 만듭니다.
-
사용자 지정 도메인 이름을 API 게이트웨이에 매핑할 DNS 레코드를 만듭니다.
-
기본 엔드포인트를 비활성화합니다.
-
API를 테스트합니다.
참고:
타사에서 서명한 인증서를 사용할 신뢰 저장소를 생성합니다.
- RootCA를 생성합니다. RootCA는 클라이언트 인증서를 발급하는 데 사용됩니다.
openssl genrsa -out RootCA.key 4096
openssl req -new -x509 -days 3650 -key RootCA.key -out RootCA.pem
-
필수 필드를 입력하고 도메인 이름을 넣습니다.
-
- 클라이언트 인증서 개인 키, CSR(인증서 서명 요청) 및 클라이언트 인증서를 만듭니다.
openssl genrsa -out my_client.key 2048
openssl req -new -key my_client.key -out my_client.csr
- 이전에 만든 CA를 사용하여 클라이언트 인증서에 서명합니다.
openssl x509 -req -in my_client.csr -CA RootCA.pem -CAkey RootCA.key -set_serial 01 -out my_client.pem -days 3650 -sha256
-
truststore.pem 파일을 저장할 Amazon Simple Storage Service(S3) 버킷을 만듭니다.
-
RootCA.pem을 Amazon S3 버킷 신뢰 저장소에 업로드합니다.
-
(선택 사항) 중간 CA 인증서에서 루트 CA까지 인증서 체인 파일을 만듭니다.
Cat Intermediate.pem ca.pem >ca-chain.pem.
자세한 내용은 신뢰 저장소 구성하기를 참조하세요.
API 게이트웨이 API에 대한 사용자 지정 도메인 이름 및 API 매핑 만들기
참고: 키 크기가 2048비트인 인증서만 API 게이트웨이에서 볼 수 있습니다. 인증서 크기는 2048비트를 초과할 수 없습니다.
-
- API 게이트웨이 콘솔을 연 다음 사용자 지정 도메인 이름을 선택합니다.
-
도메인 이름에 도메인 이름을 입력한 다음 만들기를 선택합니다.
-
도메인 이름에 도메인 이름을 입력합니다.
-
최소 TLS 버전에서 TLS 1.2를 선택합니다.
-
상호 TLS 인증을 활성화합니다.
-
신뢰 저장소 URI에 앞서 생성한 Amazon S3 URI를 입력합니다.
-
엔드포인트 구성에서 지역을 선택합니다.
-
인증서 유형에서 인증서 유형을 선택한 다음 도메인 이름 만들기를 선택합니다.
-
사용자 지정 도메인 이름을 선택한 다음 API 매핑 구성을 선택합니다.
-
새 매핑 추가를 선택합니다.
-
매핑에 대한 API, 단계, 경로를 선택한 다음 저장을 선택합니다.
자세한 내용은 내 API 게이트웨이 API의 사용자 지정 도메인 이름을 설정하려면 어떻게 해야 하나요?를 참조하세요.
사용자 지정 도메인 이름을 API 게이트웨이에 매핑할 DNS 레코드 만들기
사용자 지정 도메인 이름이 API 게이트웨이 리전 도메인 이름을 가리키도록 DNS 레코드를 만듭니다. 이렇게 하면 사용자 지정 도메인 이름에 바인딩된 트래픽이 API의 리전 호스트 이름으로 라우팅될 수 있습니다. DNS 레코드는 CNAME 또는 "A 별칭" 유형일 수 있습니다.
자세한 내용은 Route 53을 구성하여 트래픽을 API 게이트웨이 엔드포인트로 라우팅하기를 참조하세요.
기본 엔드포인트 비활성화
기본적으로 클라이언트는 API 게이트웨이가 API에 생성하는 execute-api 엔드포인트를 사용하여 API를 호출할 수 있습니다.
클라이언트가 사용자 지정 도메인 이름만 사용하여 API에 액세스할 수 있도록 기본 execute-api 엔드포인트를 비활성화합니다.
HTTP API의 경우 HTTP API 기본 엔드포인트 비활성화를 참조하세요.
REST API의 경우 REST API 기본 엔드포인트 비활성화를 참조하세요.
API 테스트
--key 및 --cert 매개 변수를 사용하여 API를 테스트하여 요청에 클라이언트 인증서를 포함해 보냅니다.
$ curl -v https://{YourCustomDomainName}/{resource} --key my_client.key --cert my_client.pem
참고: 요청이 성공하려면 개인 키 my_client.key 및 클라이언트 인증서 my_client.pem을 포함해야 합니다.
관련 정보
사용자 지정 도메인 및 상호 TLS를 사용하도록 설정한 Amazon API 게이트웨이의 인증서 체인 및 자체 서명 인증서 문제를 해결하려면 어떻게 해야 하나요?
Amazon API Gateway의 상호 TLS 인증 소개
상호 TLS가 필요한 API 게이트웨이 사용자 지정 도메인 이름에서 HTTP 403 금지됨 오류를 해결하려면 어떻게 해야 하나요?