Amazon API Gateway
개발자 안내서

백엔드 인증을 위한 SSL 인증서 생성 및 구성

API Gateway에서 SSL 인증서를 생성하고 백엔드에서는 그 퍼블릭 키를 사용하여 백엔드 시스템에 대한 HTTP 요청이 API Gateway에서 시작된 것인지 확인할 수 있습니다. 이렇게 하면 공개된 백엔드를 포함하여 HTTP 백엔드가 Amazon API Gateway에서 시작된 요청만 수락하고 제어할 수 있습니다.

참고

일부 백엔드 서버는 API Gateway처럼 SSL 클라이언트 인증을 지원하지 않으며 SSL 인증 오류를 반환할 수 있습니다. 호환되지 않는 백엔드 서버의 목록은 Amazon API Gateway 중요 정보 단원을 참조하십시오.

API Gateway에서 생성된 SSL 인증서는 자체 서명되어 있고 인증서의 퍼블릭 키만 API Gateway 콘솔에 표시되거나 API를 통해서 볼 수 있습니다.

API Gateway 콘솔을 사용하여 클라이언트 인증서 생성

  1. 기본 탐색 창에서 클라이언트 인증서(Client Certificates)를 선택합니다.

  2. 클라이언트 인증서(Client Certificates) 창에서 클라이언트 인증서 생성(Generate Client Certificate)을 선택합니다.

  3. 필요에 따라, 생성된 인증서에 대한 설명 파일을 편집에 추가하고 저장을 선택해 설명을 저장합니다. API Gateway는 새로운 인증서를 생성하고 새 인증서 GUID를 PEM 인코딩된 퍼블릭 키와 함께 반환합니다.

이제 인증서를 사용하도록 API를 구성할 준비가 되었습니다.

SSL 인증서를 사용하도록 API 구성

이 지침에서는 API Gateway 콘솔을 사용하여 클라이언트 인증서 생성을 이미 완료한 것으로 가정합니다.

  1. 클라이언트 인증서를 사용하고자 하는 API를 API Gateway 콘솔에서 생성하거나 엽니다. API가 단계에 배포되었는지 확인합니다.

  2. 선택한 API에 있는 단계(Stages)를 선택한 다음 단계를 선택합니다.

  3. 단계 편집기(Stage Editor) 패널에서 클라이언트 인증서(Client Certificate) 섹션에 있는 인증서를 선택합니다.

  4. 설정을 저장하려면 변경 사항 저장을 선택합니다.

    API Gateway 콘솔에서 이미 배포한 API라면 다시 배포해야 변경 사항이 적용됩니다. 자세한 내용은 REST API를 단계에 재배포 단원을 참조하십시오.

API에 대한 인증서를 선택하고 저장하면 API Gateway는 API의 HTTP 통합에 대한 모든 호출에 인증서를 사용합니다.

클라이언트 인증서 구성을 확인하기 위한 호출 테스트

  1. API 메서드를 선택합니다. 클라이언트(Client)에서 테스트를 선택합니다.

  2. 클라이언트 인증서(Client Certificate)에서 테스트를 선택하여 메서드 요청을 호출하십시오.

API Gateway는 선택된 SSL 인증서를 제공하여 HTTP 백엔드에서 API를 인증할 수 있도록 합니다.

클라이언트 인증서를 확인하기 위한 백엔드 HTTPS 서버 구성

이 지침에서는 이미 API Gateway 콘솔을 사용하여 클라이언트 인증서 생성을 완료하고 클라이언트 인증서 사본을 다운로드한 것으로 가정합니다. API Gateway REST API의 clientcertificate:by-id 또는 AWS CLI의 get-client-certificate를 호출하여 클라이언트 인증서를 다운로드할 수 있습니다.

API Gateway의 클라이언트 SSL 인증서를 확인하기 위해 백엔드 HTTPS 서버를 구성하기 전에 신뢰할 수 있는 인증 기관에서 제공한 PEM 인코딩된 프라이빗 키와 서버 측 인증서를 입수해야 합니다.

서버 도메인 이름이 myserver.mydomain.com일 경우, 서버 인증서의 CNAME 값이 myserver.mydomain.com 또는 *.mydomain.com이어야 합니다.

지원되는 인증 기관에는 Let's Encrypt 또는 HTTP 및 HTTP 프록시 통합에 대해 API Gateway가 지원되는 인증 기관 중 하나가 포함됩니다.

예를 들어, 클라이언트 인증서 파일이 apig-cert.pem이고 서버 프라이빗 키 및 인증서 파일이 각각 server-key.pemserver-cert.pem이라고 하면, 백엔드의 Node.js 서버에 대해 다음과 비슷하게 서버를 구성할 수 있습니다.

var fs = require('fs'); var https = require('https'); var options = { key: fs.readFileSync('server-key.pem'), cert: fs.readFileSync('server-cert.pem'), ca: fs.readFileSync('apig-cert.pem'), requestCert: true, rejectUnauthorized: true }; https.createServer(options, function (req, res) { res.writeHead(200); res.end("hello world\n"); }).listen(443);

node-express 앱의 경우, client-certificate-auth 모듈을 사용하여 PEM 인코딩된 인증서로 클라이언트 요청을 인증할 수 있습니다.

다른 HTTPS 서버는 해당 서버에 대한 설명서를 참조하십시오.

기존 클라이언트 인증서 교체

API Gateway에 의해 생성된 클라이언트 인증서는 365일간 유효합니다. API 가동 중지를 방지하려면 API 단계의 클라이언트 인증서가 만료되기 전에 인증서를 교체해야 합니다. API Gateway REST API의 clientCertificate:by-id 또는 AWS CLI get-client-certificate 명령을 호출하여 반환된 expirationDate 속성에서 인증서 만료일을 확인할 수 있습니다.

클라이언트 인증서를 교체하려면 다음 단계를 따릅니다.

  1. API Gateway REST API의 clientcertificate:generate 또는 AWS CLI generate-client-certificate 명령을 호출하여 새 클라이언트 인증서를 생성합니다. 자습서에서는 새 클라이언트 인증서 ID가 ndiqef라고 가정합니다.

  2. 백엔드 서버를 업데이트하여 새 클라이언트 인증서를 포함시킵니다. 아직 기존 클라이언트 인증서를 제거하지 마십시오.

    업데이트를 완료하려면 일부 서버를 재시작해야 할 수 있습니다. 서버 설명서를 참조하여 업데이트 도중 서버를 재시작해야 하는지 확인하십시오.

  3. API Gateway REST API의 stage:update를 호출하여 새 클라이언트 인증서 ID(ndiqef)의 새 클라이언트 인증서를 사용하도록 API 단계를 업데이트합니다.

    PATCH /restapis/{restapi-id}/stages/stage1 HTTP/1.1 Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20170603T200400Z Authorization: AWS4-HMAC-SHA256 Credential=... { "patchOperations" : [ { "op" : "replace", "path" : "/clientCertificateId", "value" : "ndiqef" } ] }

    또는 CLI update-stage 명령을 호출할 수 있습니다.

  4. 백엔드 서버를 업데이트하여 기존 인증서를 제거합니다.

  5. 기존 인증서의 clientCertificateId(a1b2c3)를 지정해 API Gateway REST API의 clientcertificate:delete를 호출하여 API Gateway에서 기존 인증서를 삭제합니다.

    DELETE /clientcertificates/a1b2c3

    또는 CLI delete-client-certificate 명령을 호출할 수 있습니다.

    aws apigateway delete-client-certificate --client-certificate-id a1b2c3

이전에 배포한 API에 대해 콘솔에서 클라이언트 인증서를 교체하려면 다음과 같이 합니다.

  1. 기본 탐색 창에서 클라이언트 인증서(Client Certificates)를 선택합니다.

  2. 클라이언트 인증서(Client Certificates) 창에서 클라이언트 인증서 생성(Generate Client Certificate)을 선택합니다.

  3. 클라이언트 인증서를 사용하려는 API를 엽니다.

  4. 선택한 API에 있는 단계(Stages)를 선택한 다음 단계를 선택합니다.

  5. 단계 편집기 패널의 클라이언트 인증서 섹션에서 새 인증서를 선택합니다.

  6. 설정을 저장하려면 변경 사항 저장을 선택합니다.

    변경을 적용하려면 API를 재배포해야 합니다. 자세한 내용은 REST API를 단계에 재배포 단원을 참조하십시오.