View a markdown version of this page

API Gateway에서 백엔드 상호 TLS에 자체 ACM 인증서 사용 - Amazon API Gateway

API Gateway에서 백엔드 상호 TLS에 자체 ACM 인증서 사용

백엔드 서비스에 자체 CA 서명 인증서를 제시하도록 API Gateway를 구성할 수 있습니다. 인증서를 AWS Certificate Manager(ACM)로 가져오거나 AWS Private Certificate Authority를 통해 발급합니다. 그런 다음 ACM 인증서 ARN을 API 스테이지에 연결합니다.

사전 조건

ACM 클라이언트 인증서를 구성하기 전에 다음이 있어야 합니다.

  • API와 동일한 리전의 AWS Certificate Manager 액세스 권한

  • IAM 권한: acm:ImportCertificateacm:DescribeCertificate(옵션 A 가져오기) 또는 acm:RequestCertificate(옵션 B) 또는 acm-pca:IssueCertificate, acm-pca:GetCertificateacm:ImportCertificate(옵션 C)

  • 스테이지에 배포된 REST API

1단계: 인증서를 가져오거나 AWS Private Certificate Authority를 통해 인증서 발급

인증서를 기존 PKI에서 가져오거나 AWS Private Certificate Authority를 통해 새로 발급할 수 있습니다. 두 경로 모두 다음 단계에서 사용하는 ACM 인증서 ARN을 생성합니다.

참고

ACM 퍼블릭 인증서는 백엔드 클라이언트 인증에 지원되지 않습니다. 2025년 6월 11일부터 AWS Certificate Manager는 clientAuth 확장 키 사용(EKU)이 포함된 퍼블릭 인증서를 더 이상 발급하지 않습니다. 이 기능을 사용하려면 EKU가 필요하므로 ACM으로 가져오는 인증서 또는 AWS Private Certificate Authority를 통해 발급된 인증서를 사용합니다.

참고

ACM 인증서를 사용할 REST API와 동일한 AWS 리전에서 인증서를 생성합니다. ACM 인증서는 리전 리소스이므로 인증서는 API의 리전에 있어야 합니다.

옵션 A: 기존 PKI에서 가져오기

클라이언트 인증서 및 해당 프라이빗 키를 ACM으로 가져오려면 다음 명령을 실행합니다. 자세한 내용은 AWS Certificate Manager 사용 설명서에서 인증서 가져오기를 참조하세요.

aws acm import-certificate \ --certificate fileb://client-cert.pem \ --private-key fileb://private-key.pem \ --certificate-chain fileb://ca-chain.pem \ --region region

명령은 ACM 인증서 ARN을 반환합니다. 다음 단계를 위해 이 값을 기록합니다.

옵션 B: AWS Private Certificate Authority를 통해 인증서 요청(ACM 관리형)

ACM이 관리하고 자동 갱신할 수 있는 프라이빗 인증서를 요청하려면 다음 명령을 실행합니다. 자세한 내용은 AWS Certificate Manager 사용 설명서프라이빗 인증서 요청을 참조하세요.

aws acm request-certificate \ --domain-name www.example.com \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:123456789012:certificate-authority/12345678-1234-1234-1234-123456789012 \ --region region

명령은 ACM 인증서 ARN을 반환합니다. 다음 단계를 위해 이 값을 기록합니다.

옵션 C: AWS Private Certificate Authority를 통해 발급 및 ACM으로 가져오기

인증서 파라미터(예: 사용자 지정 확장 또는 서명 알고리즘)를 직접 제어해야 하는 경우 AWS Private Certificate Authority를 통해 인증서를 발급한 다음 ACM으로 가져올 수 있습니다. 이러한 방식으로 가져온 인증서는 ACM에서 자동으로 갱신되지 않습니다. 인증서가 인증서 요구 사항을 충족하는지 확인합니다. 프라이빗 인증서 발급에 대한 자세한 내용은 AWS Private Certificate Authority 사용 설명서프라이빗 최종 엔터티 인증서 발급을 참조하세요.

aws acm-pca issue-certificate \ --certificate-authority-arn arn:aws:acm-pca:us-east-1:123456789012:certificate-authority/12345678-1234-1234-1234-123456789012 \ --csr fileb://csr.pem \ --signing-algorithm SHA256WITHRSA \ --validity Value=365,Type=DAYS
인증서 검색 및 가져오기

issue-certificate 명령은 ACM ARN이 아닌 AWS Private Certificate Authority 인증서 ARN을 반환합니다. API Gateway에서 이 인증서를 사용하려면 aws acm-pca get-certificate를 사용하여 인증서를 검색한 다음 aws acm import-certificate를 사용하여 ACM으로 가져옵니다. 가져오기는 다음 단계에서 사용하는 ACM 인증서 ARN을 생성합니다. aws acm import-certificate를 실행할 때 ACM 인증서가 해당 리전에서 생성되도록 --region을 API의 리전으로 설정합니다.

2단계: ACM 인증서를 사용하도록 API 스테이지 구성

ACM 인증서 ARN이 있으면 백엔드에 인증서를 제시하도록 API 스테이지를 설정합니다.

스테이지를 구성하려면(콘솔)

  1. https://console.aws.amazon.com/apigateway에서 Amazon API Gateway 콘솔을 엽니다.

  2. REST API를 선택합니다.

  3. 단계를 선택합니다.

  4. 스테이지 세부 정보 섹션에서 편집을 선택합니다.

  5. 클라이언트 인증서의 드롭다운 목록에서 ACM 인증서를 선택합니다.

  6. 변경 사항 저장을 선택합니다.

스테이지를 구성하려면(AWS CLI)

다음 명령을 실행합니다.

aws apigateway update-stage \ --rest-api-id abc123 \ --stage-name prod \ --patch-operations op='replace',path=/clientCertificateId,value=arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012
참고

API Gateway는 ACM 인증서와 API Gateway 생성 인증서 모두에 동일한 clientCertificateId 필드를 사용합니다. ACM 인증서 ARN을 제공하면 API Gateway는 형식을 자동으로 감지하고 ACM 관리형 워크플로를 사용합니다.

3단계: 구성 확인

API Gateway가 백엔드로 인증서를 전송하는지 확인하려면 다음 단계를 완료합니다.

백엔드는 클라이언트 인증서를 요청해야 합니다.

TLS 핸드셰이크 중에 클라이언트 인증서를 요청하도록 백엔드를 구성해야 합니다. 백엔드가 요청하지 않으면 API Gateway는 인증서를 제시하지 않습니다.

  1. API 엔드포인트를 간접적으로 호출합니다.

  2. TLS 핸드셰이크 중에 백엔드가 클라이언트 인증서를 가져오는지 확인합니다.

  3. 백엔드가 인증서를 수락하고 성공적인 응답을 반환하는지 확인합니다.

백엔드가 인증서를 거부하는 경우 백엔드의 트러스트 스토어에서 인증서 체인을 검증할 수 있는지 확인합니다.

인증서 요구 사항

구성하는 리프 인증서는 다음 요구 사항을 충족해야 합니다.

ACM 클라이언트 인증서 요구 사항
요구 사항 설명
최대 체인 길이 인증서 5개
유효성 인증서를 구성할 때 인증서가 만료되었거나 아직 유효하지 않은 상태여서는 안 됩니다.
리전 ACM 인증서는 API와 동일한 리전에 있어야 합니다.
계정 ACM 인증서는 API와 동일한 계정에 있어야 합니다.
확장 키 사용(EKU) 있는 경우 clientAuth를 포함해야 합니다. 없는 경우 인증서가 수락됩니다.
키 사용(KU) 있는 경우 digitalSignature 또는 keyAgreement를 포함해야 합니다. 없는 경우 인증서가 수락됩니다.
주요 알고리즘 RSA 2048, RSA 3072, RSA 4096, ECDSA P-256(EC_prime256v1), ECDSA P-384(EC_secp384r1) 또는 ECDSA P-521(EC_secp521r1) 중 하나여야 합니다.
ACM 인증서 상태 ISSUED이어야 합니다.
참고

API Gateway는 리프 인증서와 중간 인증서 간의 신뢰 체인을 검증하지 않습니다. 또한 API Gateway는 중간 인증서에 대한 인증서 의도 또는 기본 제약 조건(예: CA:TRUE)을 검증하지 않습니다. 백엔드는 TLS 핸드셰이크 중에 이러한 검증을 수행합니다.

인증서 갱신 및 전파

ACM에서 인증서가 변경되면 API Gateway는 업데이트를 감지하고 새 인증서를 자동으로 전파합니다. 스테이지를 재배포할 필요가 없으며 교체 중에 API에 가동 중지가 발생하지 않습니다.

인증서 전파는 최종적으로 일관됩니다. 업데이트 중에 백엔드는 전파가 완료될 때까지 이전 인증서 또는 새 인증서를 수신할 수 있습니다.

인증서 갱신 방법은 인증서 발급 방법에 따라 다릅니다.

  • AWS Private Certificate Authority(ACM 관리형)(옵션 B)를 통해 발급된 인증서 – ACM은 이러한 인증서를 자동으로 갱신합니다. API Gateway는 갱신을 감지하고 자동으로 업데이트합니다.

  • AWS Private Certificate Authority에서 발급하고 가져온 인증서(옵션 C) – ACM은 가져온 인증서를 자동으로 갱신하지 않습니다. 갱신된 인증서를 다시 가져와야 합니다. 인증서를 다시 가져오면 API Gateway가 변경 사항을 자동으로 감지하고 업데이트합니다.

  • PKI에서 가져온 인증서(옵션 A) – 갱신된 인증서를 ACM으로 다시 가져와야 합니다. 인증서를 다시 가져오면 API Gateway가 변경 사항을 자동으로 감지하고 업데이트합니다.

ACM은 Amazon EventBridge를 통해 인증서 만료 알림을 보냅니다. 이러한 알림을 사용하여 인증서 만료 전 경보를 설정할 수 있습니다.

ACM 인증서 동작 및 제한 사항

구성된 인증서 보기

ACM 인증서는 GetClientCertificate 또는 GetClientCertificates API 응답에 표시되지 않습니다. 스테이지에 구성된 ACM 인증서 ARN을 보려면 GetStage를 사용합니다. 인증서 세부 정보를 보려면 ACM API DescribeCertificateGetCertificate를 사용합니다.

여러 스테이지에서 재사용

동일한 ACM 인증서를 여러 단계에 연결할 수 있습니다. 각 단계는 ARN을 기준으로 인증서를 독립적으로 참조합니다.

클라이언트 인증서 API는 ACM 인증서에 적용되지 않음

ACM 인증서는 API Gateway 관리형 리소스가 아닙니다. GetClientCertificate, UpdateClientCertificateDeleteClientCertificate API는 ACM 인증서 ARN으로 직접적으로 호출될 때 NotFoundException을 반환합니다. ACM API를 사용하여 인증서 수명 주기를 관리하세요.

자동 인증서 연결 정리

스테이지에서 ACM 인증서를 제거하거나, 다른 인증서를 사용하도록 스테이지를 업데이트하거나, 스테이지 또는 REST API를 삭제하면 API Gateway가 인증서 연결을 자동으로 정리합니다. 수동 작업은 필요하지 않습니다.

ACM 인증서 삭제

ACM은 API Gateway에 인증서와의 활성 연결이 있는 동안에는 인증서를 삭제할 수 없습니다. ACM에서 인증서를 삭제하려면 먼저 인증서를 참조하는 모든 스테이지에서 인증서를 제거합니다.