쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

OCSP 스테이플링을 위한 서버 인증서 구성

포커스 모드
OCSP 스테이플링을 위한 서버 인증서 구성 - AWS IoT Core

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS IoT Core 는 서버 인증서 스테이플링 또는 OCSP 스테이플링이라고도 하는 서버 인증서에 대한 온라인 인증서 상태 프로토콜(OCSP) OCSP 스테이플링을 지원합니다. 전송 계층 보안(TLS) 핸드셰이크에서 서버 인증서의 해지 상태를 확인하는 데 사용되는 보안 메커니즘입니다. OCSP에 스테이플링 AWS IoT Core 하면 사용자 지정 도메인의 서버 인증서 유효성에 추가 확인 계층을 추가할 수 있습니다.

서버 인증서OCSP가 스테이플링되도록 AWS IoT Core 하여 OCSP 응답기를 주기적으로 쿼리하여 인증서의 유효성을 확인할 수 있습니다. OCSP 스테이플링 설정은 사용자 지정 도메인으로 도메인 구성을 생성하거나 업데이트하는 프로세스의 일부입니다. OCSP 스테이플링은 서버 인증서의 해지 상태를 지속적으로 확인합니다. 이렇게 하면 CA에서 취소한 모든 인증서가 사용자 지정 도메인에 연결하는 클라이언트에서 더 이상 신뢰할 수 없는지 확인할 수 있습니다. 자세한 내용은 OCSP에서 서버 인증서 활성화 AWS IoT Core 단원을 참조하십시오.

서버 인증서 OCSP 스테이플링은 실시간 취소 상태 확인을 제공하고, 취소 상태 확인과 관련된 지연 시간을 줄이며, 보안 연결의 프라이버시와 신뢰성을 개선합니다. OCSP 스테이플링 사용의 이점에 대한 자세한 내용은 섹션을 참조하세요클라이언트 측 OCSP 검사에 비해 OCSP 스테이플링 사용의 이점.

참고

이 기능은에서 사용할 수 없습니다 AWS GovCloud (US) Regions.

OCSP란 무엇인가요?

온라인 인증서 상태 프로토콜(OCSP)은 전송 계층 보안(TLS) 핸드셰이크에 대한 서버 인증서의 해지 상태를 제공하는 데 도움이 됩니다.

주요 개념

다음 주요 개념은 온라인 인증서 상태 프로토콜()에 대한 세부 정보를 제공합니다OCSP.

OCSP

OCSP는 전송 계층 보안(TLS) 핸드셰이크 중에 인증서 해지 상태를 확인하는 데 사용됩니다.는 인증서의 실시간 검증을 OCSP 허용합니다. 이렇게 하면 인증서가 발급된 이후 취소되거나 만료되지 않았음을 확인할 수 있습니다. 또한 OCSP는 기존 인증서 취소 목록(CRLs)에 비해 확장성이 뛰어납니다. OCSP 응답은 더 작고 효율적으로 생성될 수 있으므로 대규모 프라이빗 키 인프라()에 더 적합합니다PKIs.

OCSP 응답기

OCSP 응답기(OCSP서버라고도 함)는 인증서의 해지 상태를 확인하려는 클라이언트의 OCSP 요청을 수신하고 응답합니다.

클라이언트 측 OCSP

클라이언트 측에서 클라이언트OCSP는 OCSP를 사용하여 TLS 핸드셰이크 중에 OCSP 응답자에게 연락하여 인증서의 해지 상태를 확인합니다.

서버 측 OCSP

서버 측OCSP(OCSP스테이플링이라고도 함)에서는 서버가 (클라이언트가 아닌) 활성화되어 OCSP 응답자에게 요청을 합니다. 서버는 인증서에 대한 OCSP 응답을 스테이플링하고 TLS 핸드셰이크 중에 클라이언트에 반환합니다.

OCSP 다이어그램

다음 다이어그램은 클라이언트 측 OCSP 및 서버 측OCSP의 작동 방식을 보여줍니다.

클라이언트 측 OCSP 및 서버 측 OCSP 다이어그램
클라이언트 측 OCSP
  1. 클라이언트는 서버와 핸드TLS셰이크를 시작하는 ClientHello 메시지를 보냅니다.

  2. 서버는 메시지를 수신하고 ServerHello 메시지로 응답합니다. 서버는 또한 서버 인증서를 클라이언트로 전송합니다.

  3. 클라이언트는 서버 인증서를 검증하고 서버 인증서OCSPURI에서를 추출합니다.

  4. 클라이언트는 OCSP 응답자에게 인증서 해지 확인 요청을 보냅니다.

  5. OCSP 응답자가 OCSP 응답을 보냅니다.

  6. 클라이언트는 OCSP 응답에서 인증서 상태를 검증합니다.

  7. TLS 핸드셰이크가 완료되었습니다.

서버 측 OCSP
  1. 클라이언트는 서버와 핸드TLS셰이크를 시작하는 ClientHello 메시지를 보냅니다.

  2. 서버는 메시지를 수신하고 캐시된 최신 OCSP 응답을 가져옵니다. 캐시된 응답이 누락되거나 만료된 경우 서버는 OCSP 응답자에게 인증서 상태를 호출합니다.

  3. OCSP 응답기가 서버에 OCSP 응답을 보냅니다.

  4. 서버가 ServerHello 메시지를 보냅니다. 또한 서버는 서버 인증서와 인증서 상태를 클라이언트로 전송합니다.

  5. 클라이언트가 OCSP 인증서 상태를 확인합니다.

  6. TLS 핸드셰이크가 완료되었습니다.

OCSP 스테이플링 작동 방식

OCSP 스테이플링은 클라이언트와 서버 간의 TLS 핸드셰이크 중에 서버 인증서 해지 상태를 확인하는 데 사용됩니다. 서버는 OCSP 응답자에게 OCSP 요청을 하고 클라이언트에 반환된 인증서에 대한 OCSP 응답을 스테이플링합니다. 서버가 OCSP 응답자에게 요청하도록 하면 응답을 캐시한 다음 여러 클라이언트에 대해 여러 번 사용할 수 있습니다.

OCSP 스테이플링 작동 방식 AWS IoT Core

다음 다이어그램은에서 서버 측 OCSP 스테이플링이 작동하는 방식을 보여줍니다 AWS IoT Core.

이 다이어그램은 서버 측 OCSP 스테이플링이 작동하는 방식을 보여줍니다 AWS IoT Core.
  1. OCSP 스테이플링이 활성화된 사용자 지정 도메인에 디바이스를 등록해야 합니다.

  2. AWS IoT Core 는 1시간마다 OCSP 응답기를 호출하여 인증서 상태를 가져옵니다.

  3. OCSP 응답자는 요청을 수신하고, 최신 OCSP 응답을 전송하고, 캐시된 OCSP 응답을 저장합니다.

  4. 디바이스는 TLS 핸드셰이크를 시작하는 ClientHello 메시지를 보냅니다 AWS IoT Core.

  5. AWS IoT Core 는 서버 캐시에서 최신 OCSP 응답을 가져와 인증서의 OCSP 응답으로 응답합니다.

  6. 서버는 디바이스에 ServerHello 메시지를 보냅니다. 또한 서버는 서버 인증서와 인증서 상태를 클라이언트로 전송합니다.

  7. 디바이스가 OCSP 인증서 상태를 검증합니다.

  8. TLS 핸드셰이크가 완료되었습니다.

클라이언트 측 OCSP 검사에 비해 OCSP 스테이플링 사용의 이점

서버 인증서 OCSP 스테이플링 사용의 몇 가지 이점은 다음과 같습니다.

개인 정보 보호 개선

OCSP 스테이플링이 없으면 클라이언트의 디바이스가 타사 OCSP 대응자에게 정보를 노출하여 사용자 프라이버시를 손상시킬 수 있습니다. OCSP 스테이플링은 서버가 OCSP 응답을 받아 클라이언트에 직접 전달하도록 하여이 문제를 완화합니다.

신뢰성 향상

OCSP 스테이플링은 OCSP 서버 중단 위험을 줄이기 때문에 보안 연결의 신뢰성을 개선할 수 있습니다. OCSP 응답이 스테이플링되면 서버에 인증서에 대한 가장 최근 응답이 포함됩니다. 이렇게 하면 OCSP 응답기를 일시적으로 사용할 수 없는 경우에도 클라이언트가 해지 상태에 액세스할 수 있습니다. OCSP스테이플링은 서버가 OCSP 응답을 주기적으로 가져오고 TLS 핸드셰이크에 캐시된 응답을 포함하기 때문에 이러한 문제를 완화하는 데 도움이 됩니다. 이렇게 OCSP 하면 대응 담당자의 실시간 가용성에 대한 의존도가 줄어듭니다.

서버 부하 감소

OCSP 스테이플링은 OCSP 응답자의 OCSP 요청에 응답하는 부담을 서버로 덜어 줍니다. 이렇게 하면 부하를 더 균등하게 분산하여 인증서 검증 프로세스를 더 효율적이고 확장할 수 있습니다.

지연 시간 단축

OCSP 스테이플링은 TLS 핸드셰이크 중에 인증서의 해지 상태를 확인하는 것과 관련된 지연 시간을 줄입니다. 클라이언트가 OCSP 서버를 별도로 쿼리해야 하는 대신 서버는 요청을 보내고 핸드셰이크 중에 서버 인증서와 OCSP 응답을 연결합니다.

OCSP에서 서버 인증서 활성화 AWS IoT Core

서버 인증서 OCSP 스테이플링을 활성화하려면 사용자 지정 도메인에 대한 도메인 구성을 AWS IoT Core생성하거나 기존 사용자 지정 도메인 구성을 업데이트합니다. 사용자 지정 도메인을 사용하여 도메인 구성을 생성하는 방법에 대한 일반적인 내용은 고객 관리형 도메인 생성 및 구성 섹션을 참조하세요.

다음 지침에 따라 AWS Management Console 또는를 사용하여 OCSP 서버 스테이플링을 활성화합니다 AWS CLI.

콘솔을 사용하여 서버 인증서 OCSP 스테이플링을 AWS IoT 활성화하려면:
  1. 탐색 메뉴에서 설정을 선택한 다음 도메인 구성 생성을 선택하거나 사용자 지정 도메인의 기존 도메인 구성을 선택합니다.

  2. 이전 단계에서 새 도메인 구성을 생성하도록 선택하면 도메인 구성 생성 페이지가 표시됩니다. 도메인 구성 속성 섹션에서 사용자 지정 도메인을 선택합니다. 정보를 입력하여 도메인 구성을 생성합니다.

    사용자 지정 도메인의 기존 도메인 구성을 업데이트하도록 선택하면 도메인 구성 세부 정보 페이지가 표시됩니다. 편집을 선택합니다.

  3. OCSP 서버 스테이플링을 활성화하려면 서버 인증서 구성 하위 섹션에서 서버 인증서 OCSP 스테이플링 활성화를 선택합니다.

  4. 도메인 구성 생성 또는 도메인 구성 업데이트를 선택합니다.

콘솔

콘솔을 사용하여 서버 인증서 OCSP 스테이플링을 AWS IoT 활성화하려면:
  1. 탐색 메뉴에서 설정을 선택한 다음 도메인 구성 생성을 선택하거나 사용자 지정 도메인의 기존 도메인 구성을 선택합니다.

  2. 이전 단계에서 새 도메인 구성을 생성하도록 선택하면 도메인 구성 생성 페이지가 표시됩니다. 도메인 구성 속성 섹션에서 사용자 지정 도메인을 선택합니다. 정보를 입력하여 도메인 구성을 생성합니다.

    사용자 지정 도메인의 기존 도메인 구성을 업데이트하도록 선택하면 도메인 구성 세부 정보 페이지가 표시됩니다. 편집을 선택합니다.

  3. OCSP 서버 스테이플링을 활성화하려면 서버 인증서 구성 하위 섹션에서 서버 인증서 OCSP 스테이플링 활성화를 선택합니다.

  4. 도메인 구성 생성 또는 도메인 구성 업데이트를 선택합니다.

AWS CLI다음을 사용하여 서버 인증서 OCSP 스테이플링을 활성화하려면
  1. 사용자 지정 도메인에 대한 새 도메인 구성을 생성하는 경우 OCSP 서버 스테이플링을 활성화하는 명령은 다음과 같을 수 있습니다.

    aws iot create-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3 \ --server-certificate-config "enableOCSPCheck=true|false"
  2. 사용자 지정 도메인의 기존 도메인 구성을 업데이트하는 경우 OCSP 서버 스테이플링을 활성화하는 명령은 다음과 같을 수 있습니다.

    aws iot update-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3 \ --server-certificate-config "enableOCSPCheck=true|false"

자세한 내용은 참조UpdateDomainConfigurationCreateDomainConfiguration 및 섹션을 참조하세요 AWS IoT API.

AWS CLI

AWS CLI다음을 사용하여 서버 인증서 OCSP 스테이플링을 활성화하려면
  1. 사용자 지정 도메인에 대한 새 도메인 구성을 생성하는 경우 OCSP 서버 스테이플링을 활성화하는 명령은 다음과 같을 수 있습니다.

    aws iot create-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3 \ --server-certificate-config "enableOCSPCheck=true|false"
  2. 사용자 지정 도메인의 기존 도메인 구성을 업데이트하는 경우 OCSP 서버 스테이플링을 활성화하는 명령은 다음과 같을 수 있습니다.

    aws iot update-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3 \ --server-certificate-config "enableOCSPCheck=true|false"

자세한 내용은 참조UpdateDomainConfigurationCreateDomainConfiguration 및 섹션을 참조하세요 AWS IoT API.

에서 프라이빗 엔드포인트OCSP에 대한 서버 인증서 구성 AWS IoT Core

OCSP 프라이빗 엔드포인트용를 사용하면 Amazon Virtual Private Cloud(Amazon VPC) 내의 프라이빗 OCSP 리소스를 AWS IoT Core 작업에 사용할 수 있습니다. 이 프로세스에는 OCSP 응답기 역할을 하는 Lambda 함수를 설정하는 작업이 포함됩니다. Lambda 함수는 프라이빗 OCSP 리소스를 사용하여에서 사용할 OCSP 응답을 생성할 AWS IoT Core 수 있습니다.

Lambda 함수

프라이빗 엔드포인트에 OCSP 대해 서버를 구성하기 전에 기본 OCSP 응답을 지원하는 의견 요청(RFC) 6960 준수 온라인 인증서 상태 프로토콜(OCSP) 응답기 역할을 하는 Lambda 함수를 생성합니다. Lambda 함수는 고유 인코딩 규칙(DER) 형식의 OCSP 요청에 대해 base64 인코딩을 허용합니다. Lambda 함수의 응답은 DER 형식의 base64 인코딩 OCSP 응답이기도 합니다. 응답 크기는 4킬로바이트(KiB)를 초과해서는 안 됩니다. Lambda 함수는 AWS 리전 도메인 구성 AWS 계정 과 동일한에 있어야 합니다. 다음은 Lambda 함수의 예입니다.

예 Lambda 함수

JavaScript
import * as pkijs from 'pkijs'; console.log('Loading function'); export const handler = async (event, context) => { const requestBytes = decodeBase64(event); const ocspRequest = pkijs.OCSPRequest.fromBER(requestBytes); console.log("Here is a better look at the OCSP request"); console.log(ocspRequest.toJSON()); const ocspResponse = getOcspResponse(); console.log("Here is a better look at the OCSP response"); console.log(ocspResponse.toJSON()); const responseBytes = ocspResponse.toSchema().toBER(); return encodeBase64(responseBytes); }; function getOcspResponse() { const responseString = "MIIC/woBAKCCAvgwggL0BgkrBgEFBQcwAQEEggLlMIIC4TCByqFkMGIxJzAlBgNVBAoMHlJpY2hhcmQncyBEaXNjb3VudCBMYW1iZGEgT0NTUDEZMBcGA1UEAwwQcm91bmRhYm91dE5hdGlvbjEPMA0GA1UEBwwGQ2FybWVsMQswCQYDVQQGEwJJThgPMjAyNDA0MjMxODUzMjVaMFEwTzA6MAkGBSsOAwIaBQAEFD2L7Ol/6ieNMaJbwRbxFWFweXGPBBSzSThwzTc3/p5w7WOtPjp3otNtVgIBAYAAGA8yMDI0MDQyMzE4NTMyNVowDQYJKoZIhvcNAQELBQADggIBAJFRyjDAHfazNejo704Ra3FOsGq/+s82R1spDarr3k7Pzkod9jJhwsZ2YgushlS4Npfe4lHCdwFyZR75WXrW55aXFddy03KLz01ZLNYyxkleW3f5dgrUcRU3PMW9TU2gZ0VOV8L5pmxKBoBRFt6EKtyh4CbiuqkTpLdLIMZmTyanhl5GVyU5MBHdbH8YWZoT/DEBiyS7ZsyhKo6igWU/SY7YMSKgwBvFsqSDcOa/hRYQkxWKWJ19gcz8CIkWN7NvfIxCs6VrAdzEJwmE7y3v+jdfhxW9JmI4xStE4K0tAR9vVOOfKs7NvxXj7oc9pCSG60xl96kaEE6PaY1YsfNTsKQ7pyCJ0s7/2q+ieZ4AtNyzw1XBadPzPJNv6E0LvI24yQZqN5wACvtut5prMMRxAHbOy+abLZR58wloFSELtGJ7UD96LFv1GgtC5s+2QlzPc4bEEof7Lo1EISt3j2ibNch8LxhqTQ4ufrbhsMkpSOTFYEJVMJF6aKj/OGXBUUqgc0Jx6jjJXNQd+l5KCY9pQFeb/wVUYC6mYqZOkNNMMJxPbHHbFnqb68yO+g5BE9011N44YXoPVJYoXxBLFX+OpRu9cqPkT9/vlkKd+SYXQknwZ81agKzhf1HsBKabtJwNVMlBKaI8g5UGa7Bxi6ewH3ezdWiERRUK7F56OM53wto/"; const responseBytes = decodeBase64(responseString); return pkijs.OCSPResponse.fromBER(responseBytes); } function decodeBase64(input) { const binaryString = atob(input); const byteArray = new Uint8Array(binaryString.length); for (var i = 0; i < binaryString.length; i++) { byteArray[i] = binaryString.charCodeAt(i); } return byteArray.buffer; } function encodeBase64(buffer) { var binary = ''; const bytes = new Uint8Array( buffer ); const len = bytes.byteLength; for (var i = 0; i < len; i++) { binary += String.fromCharCode( bytes[ i ] ); } return btoa(binary); }
Java
package com.example.ocsp.responder; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.services.lambda.runtime.RequestHandler; import org.bouncycastle.cert.ocsp.OCSPReq; import org.bouncycastle.cert.ocsp.OCSPResp; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Base64; public class LambdaResponderApplication implements RequestHandler<String, String> { @Override public String handleRequest(final String input, final Context context) { LambdaLogger logger = context.getLogger(); byte[] decodedInput = Base64.getDecoder().decode(input); OCSPReq req; try { req = new OCSPReq(decodedInput); } catch (IOException e) { logger.log("Got an IOException creating the OCSP request: " + e.getMessage()); throw new RuntimeException(e); } try { OCSPResp response = businessLogic.getMyResponse(); String toReturn = Base64.getEncoder().encodeToString(response.getEncoded()); return toReturn; } catch (Exception e) { logger.log("Got an exception creating the response: " + e.getMessage()); return ""; } } }
import * as pkijs from 'pkijs'; console.log('Loading function'); export const handler = async (event, context) => { const requestBytes = decodeBase64(event); const ocspRequest = pkijs.OCSPRequest.fromBER(requestBytes); console.log("Here is a better look at the OCSP request"); console.log(ocspRequest.toJSON()); const ocspResponse = getOcspResponse(); console.log("Here is a better look at the OCSP response"); console.log(ocspResponse.toJSON()); const responseBytes = ocspResponse.toSchema().toBER(); return encodeBase64(responseBytes); }; function getOcspResponse() { const responseString = "MIIC/woBAKCCAvgwggL0BgkrBgEFBQcwAQEEggLlMIIC4TCByqFkMGIxJzAlBgNVBAoMHlJpY2hhcmQncyBEaXNjb3VudCBMYW1iZGEgT0NTUDEZMBcGA1UEAwwQcm91bmRhYm91dE5hdGlvbjEPMA0GA1UEBwwGQ2FybWVsMQswCQYDVQQGEwJJThgPMjAyNDA0MjMxODUzMjVaMFEwTzA6MAkGBSsOAwIaBQAEFD2L7Ol/6ieNMaJbwRbxFWFweXGPBBSzSThwzTc3/p5w7WOtPjp3otNtVgIBAYAAGA8yMDI0MDQyMzE4NTMyNVowDQYJKoZIhvcNAQELBQADggIBAJFRyjDAHfazNejo704Ra3FOsGq/+s82R1spDarr3k7Pzkod9jJhwsZ2YgushlS4Npfe4lHCdwFyZR75WXrW55aXFddy03KLz01ZLNYyxkleW3f5dgrUcRU3PMW9TU2gZ0VOV8L5pmxKBoBRFt6EKtyh4CbiuqkTpLdLIMZmTyanhl5GVyU5MBHdbH8YWZoT/DEBiyS7ZsyhKo6igWU/SY7YMSKgwBvFsqSDcOa/hRYQkxWKWJ19gcz8CIkWN7NvfIxCs6VrAdzEJwmE7y3v+jdfhxW9JmI4xStE4K0tAR9vVOOfKs7NvxXj7oc9pCSG60xl96kaEE6PaY1YsfNTsKQ7pyCJ0s7/2q+ieZ4AtNyzw1XBadPzPJNv6E0LvI24yQZqN5wACvtut5prMMRxAHbOy+abLZR58wloFSELtGJ7UD96LFv1GgtC5s+2QlzPc4bEEof7Lo1EISt3j2ibNch8LxhqTQ4ufrbhsMkpSOTFYEJVMJF6aKj/OGXBUUqgc0Jx6jjJXNQd+l5KCY9pQFeb/wVUYC6mYqZOkNNMMJxPbHHbFnqb68yO+g5BE9011N44YXoPVJYoXxBLFX+OpRu9cqPkT9/vlkKd+SYXQknwZ81agKzhf1HsBKabtJwNVMlBKaI8g5UGa7Bxi6ewH3ezdWiERRUK7F56OM53wto/"; const responseBytes = decodeBase64(responseString); return pkijs.OCSPResponse.fromBER(responseBytes); } function decodeBase64(input) { const binaryString = atob(input); const byteArray = new Uint8Array(binaryString.length); for (var i = 0; i < binaryString.length; i++) { byteArray[i] = binaryString.charCodeAt(i); } return byteArray.buffer; } function encodeBase64(buffer) { var binary = ''; const bytes = new Uint8Array( buffer ); const len = bytes.byteLength; for (var i = 0; i < len; i++) { binary += String.fromCharCode( bytes[ i ] ); } return btoa(binary); }

Lambda 함수 AWS IoT 호출 권한 부여

Lambda OCSP 응답기로 도메인 구성을 생성하는 과정에서 함수를 생성한 후 Lambda 함수를 호출할 수 있는 AWS IoT 권한을 부여해야 합니다. 권한을 부여하려면 add-permission CLI 명령을 사용할 수 있습니다.

를 사용하여 Lambda 함수에 권한 부여 AWS CLI
  1. 값을 삽입한 후 다음 명령을 입력합니다. 참고: statement-id 값은 고유해야 합니다. Id-1234을(를) 정확한 값으로 바꿉니다. 그렇지 않으면 ResourceConflictException 오류가 발생할 수 있습니다.

    aws lambda add-permission \ --function-name "ocsp-function" \ --principal "iot.amazonaws.com" \ --action "lambda:InvokeFunction" \ --statement-id "Id-1234" \ --source-arn arn:aws:iot:us-east-1:123456789012:domainconfiguration/<domain-config-name>/* --source-account 123456789012

    IoT 도메인 구성ARNs은 다음 패턴을 따릅니다. 생성 시간 전에는 서비스 생성 접미사를 알 수 없으므로 접미사를 로 바꿔야 합니다*. 도메인 구성이 생성되고 정확한 ARN가 알려지면 권한을 업데이트할 수 있습니다.

    arn:aws:iot:use-east-1:123456789012:domainconfiguration/domain-config-name/service-generated-suffix

  2. 명령이 성공하면 이 예제와 같은 권한 문이 반환됩니다. 다음 섹션으로 이동하여 프라이빗 엔드포인트에 대한 OCSP 스테이플링을 구성할 수 있습니다.

    { "Statement": "{\"Sid\":\"Id-1234\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:ocsp-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:iot:us-east-1:123456789012:domainconfiguration/domain-config-name/*\"}}}" }

    명령이 성공하지 못하면 이 예제와 같은 오류가 반환됩니다. 계속하기 전에 오류를 검토하고 수정해야 합니다.

    An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer mission on resource: arn:aws:lambda:us-east-1:123456789012:function:ocsp-function

프라이빗 엔드포인트에 대한 서버 OCSP 스테이플링 구성

콘솔을 사용하여 서버 인증서 OCSP 스테이플링을 AWS IoT 구성하려면:
  1. 탐색 메뉴에서 설정을 선택한 다음 도메인 구성 생성을 선택하거나 사용자 지정 도메인의 기존 도메인 구성을 선택합니다.

  2. 이전 단계에서 새 도메인 구성을 생성하도록 선택하면 도메인 구성 생성 페이지가 표시됩니다. 도메인 구성 속성 섹션에서 사용자 지정 도메인을 선택합니다. 정보를 입력하여 도메인 구성을 생성합니다.

    사용자 지정 도메인의 기존 도메인 구성을 업데이트하도록 선택하면 도메인 구성 세부 정보 페이지가 표시됩니다. 편집을 선택합니다.

  3. OCSP 서버 스테이플링을 활성화하려면 서버 인증서 구성 하위 섹션에서 서버 인증서 OCSP 스테이플링 활성화를 선택합니다.

  4. 도메인 구성 생성 또는 도메인 구성 업데이트를 선택합니다.

콘솔

콘솔을 사용하여 서버 인증서 OCSP 스테이플링을 AWS IoT 구성하려면:
  1. 탐색 메뉴에서 설정을 선택한 다음 도메인 구성 생성을 선택하거나 사용자 지정 도메인의 기존 도메인 구성을 선택합니다.

  2. 이전 단계에서 새 도메인 구성을 생성하도록 선택하면 도메인 구성 생성 페이지가 표시됩니다. 도메인 구성 속성 섹션에서 사용자 지정 도메인을 선택합니다. 정보를 입력하여 도메인 구성을 생성합니다.

    사용자 지정 도메인의 기존 도메인 구성을 업데이트하도록 선택하면 도메인 구성 세부 정보 페이지가 표시됩니다. 편집을 선택합니다.

  3. OCSP 서버 스테이플링을 활성화하려면 서버 인증서 구성 하위 섹션에서 서버 인증서 OCSP 스테이플링 활성화를 선택합니다.

  4. 도메인 구성 생성 또는 도메인 구성 업데이트를 선택합니다.

AWS CLI다음을 사용하여 서버 인증서 OCSP 스테이플링을 구성하려면
  1. 사용자 지정 도메인에 대한 새 도메인 구성을 생성하는 경우 프라이빗 엔드포인트에 OCSP 대한 서버 인증서를 구성하는 명령은 다음과 같을 수 있습니다.

    aws iot create-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3 \ --server-certificate-config "enableOCSPCheck=true, ocspAuthorizedResponderArn=arn:aws:acm:us-east-1:123456789012:certificate/certificate_ID, ocspLambdaArn=arn:aws:lambda:us-east-1:123456789012:function:my-function"
  2. 사용자 지정 도메인에 대한 기존 도메인 구성을 업데이트하는 경우 프라이빗 엔드포인트에 OCSP 대한 서버 인증서를 구성하는 명령은 다음과 같을 수 있습니다.

    aws iot update-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3 \ --server-certificate-config "enableOCSPCheck=true, ocspAuthorizedResponderArn=arn:aws:acm:us-east-1:123456789012:certificate/certificate_ID, ocspLambdaArn=arn:aws:lambda:us-east-1:123456789012:function:my-function"
enableOCSPCheck

서버 OCSP 스테이플링 검사 활성화 여부를 나타내는 부울 값입니다. 서버 인증서 OCSP 스테이플링을 활성화하려면이 값이 true여야 합니다.

ocspAuthorizedResponderArn

(ARN)에 저장된 X.509 인증서에 대한 Amazon 리소스 이름 AWS Certificate Manager ()의 문자열 값입니다ACM. 제공된 경우 AWS IoT Core 는이 인증서를 사용하여 수신된 OCSP 응답의 서명을 검증합니다. 제공되지 않으면 발급 인증서를 AWS IoT Core 사용하여 응답을 검증합니다. 인증서는 도메인 구성 AWS 계정 과 동일한 AWS 리전 에 있어야 합니다. 승인된 응답기 인증서를 등록하는 방법에 대한 자세한 내용은 로 인증서 가져오기 AWS Certificate Manager를 참조하세요.

ocspLambdaArn

기본 OCSP 응답을 지원하는 의견 요청(ARN) 6960 준수(RFC) 응답자로 작동하는 Lambda 함수의 Amazon 리소스 이름(OCSP) 문자열 값입니다. Lambda 함수는 DER 형식을 사용하여 인코딩되는 OCSP 요청의 base64 인코딩을 수락합니다. Lambda 함수의 응답은 DER 형식의 base64 인코딩 OCSP 응답이기도 합니다. 응답 크기는 4킬로바이트(KiB)를 초과해서는 안 됩니다. Lambda 함수는 AWS 리전 도메인 구성 AWS 계정 과 동일한에 있어야 합니다.

자세한 내용은 참조UpdateDomainConfigurationCreateDomainConfiguration 및 섹션을 참조하세요 AWS IoT API.

AWS CLI

AWS CLI다음을 사용하여 서버 인증서 OCSP 스테이플링을 구성하려면
  1. 사용자 지정 도메인에 대한 새 도메인 구성을 생성하는 경우 프라이빗 엔드포인트에 OCSP 대한 서버 인증서를 구성하는 명령은 다음과 같을 수 있습니다.

    aws iot create-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3 \ --server-certificate-config "enableOCSPCheck=true, ocspAuthorizedResponderArn=arn:aws:acm:us-east-1:123456789012:certificate/certificate_ID, ocspLambdaArn=arn:aws:lambda:us-east-1:123456789012:function:my-function"
  2. 사용자 지정 도메인에 대한 기존 도메인 구성을 업데이트하는 경우 프라이빗 엔드포인트에 OCSP 대한 서버 인증서를 구성하는 명령은 다음과 같을 수 있습니다.

    aws iot update-domain-configuration --domain-configuration-name "myDomainConfigurationName" \ --server-certificate-arns arn:aws:iot:us-east-1:123456789012:cert/f8c1e5480266caef0fdb1bf97dc1c82d7ba2d3e2642c5f25f5ba364fc6b79ba3 \ --server-certificate-config "enableOCSPCheck=true, ocspAuthorizedResponderArn=arn:aws:acm:us-east-1:123456789012:certificate/certificate_ID, ocspLambdaArn=arn:aws:lambda:us-east-1:123456789012:function:my-function"
enableOCSPCheck

서버 OCSP 스테이플링 검사 활성화 여부를 나타내는 부울 값입니다. 서버 인증서 OCSP 스테이플링을 활성화하려면이 값이 true여야 합니다.

ocspAuthorizedResponderArn

(ARN)에 저장된 X.509 인증서에 대한 Amazon 리소스 이름 AWS Certificate Manager ()의 문자열 값입니다ACM. 제공된 경우 AWS IoT Core 는이 인증서를 사용하여 수신된 OCSP 응답의 서명을 검증합니다. 제공되지 않으면 발급 인증서를 AWS IoT Core 사용하여 응답을 검증합니다. 인증서는 도메인 구성 AWS 계정 과 동일한 AWS 리전 에 있어야 합니다. 승인된 응답기 인증서를 등록하는 방법에 대한 자세한 내용은 로 인증서 가져오기 AWS Certificate Manager를 참조하세요.

ocspLambdaArn

기본 OCSP 응답을 지원하는 의견 요청(ARN) 6960 준수(RFC) 응답자로 작동하는 Lambda 함수의 Amazon 리소스 이름(OCSP) 문자열 값입니다. Lambda 함수는 DER 형식을 사용하여 인코딩되는 OCSP 요청의 base64 인코딩을 수락합니다. Lambda 함수의 응답은 DER 형식의 base64 인코딩 OCSP 응답이기도 합니다. 응답 크기는 4킬로바이트(KiB)를 초과해서는 안 됩니다. Lambda 함수는 AWS 리전 도메인 구성 AWS 계정 과 동일한에 있어야 합니다.

자세한 내용은 참조UpdateDomainConfigurationCreateDomainConfiguration 및 섹션을 참조하세요 AWS IoT API.

에서 서버 인증서 OCSP 스테이플링을 사용하기 위한 중요 참고 사항 AWS IoT Core

OCSP에서 서버 인증서를 사용하는 경우 다음 AWS IoT Core사항에 유의하세요.

  1. AWS IoT Core 는 퍼블릭 IPv4 주소를 통해 연결할 수 있는 OCSP 응답기만 지원합니다.

  2. 의 OCSP 스테이플링 기능은 승인된 응답기를 지원하지 AWS IoT Core 않습니다. 모든 OCSP 응답은 인증서에 서명한 CA가 서명해야 하며 CA는 사용자 지정 도메인의 인증서 체인에 속해야 합니다.

  3. 의 OCSP 스테이플링 기능은 자체 서명된 인증서를 사용하여 생성된 사용자 지정 도메인을 지원하지 AWS IoT Core 않습니다.

  4. AWS IoT Core 는 매시간 OCSP 응답기를 호출하고 응답을 캐싱합니다. 응답기에 대한 호출이 실패하면 AWS IoT Core 는 가장 최근의 유효한 응답을 스테이플링합니다.

  5. nextUpdateTime가 더 이상 유효하지 않은 경우 AWS IoT Core 는 캐시에서 응답을 제거하고 TLS 핸드셰이크는 OCSP 응답기에 대한 다음 번 성공적인 호출까지 OCSP 응답 데이터를 포함하지 않습니다. 이는 서버가 OCSP 응답기로부터 유효한 응답을 받기 전에 캐시된 응답이 만료되었을 때 발생할 수 있습니다. 의 값은이 시점까지 OCSP 응답이 유효할 것임을 nextUpdateTime 제안합니다. nextUpdateTime에 대한 자세한 정보는 서버 인증서 OCSP 로그 항목을 참조하세요.

  6. 경우에 따라 OCSP 응답을 수신하지 AWS IoT Core 못하거나 만료되어 기존 OCSP 응답을 제거합니다. 이러한 상황이 발생하면 AWS IoT Core 는 OCSP 응답 없이 사용자 지정 도메인에서 제공하는 서버 인증서를 계속 사용합니다.

  7. OCSP 응답 크기는 4KiB를 초과할 수 없습니다.

에서 서버 인증서 OCSP 스테이플링 문제 해결 AWS IoT Core

AWS IoT Core 는 RetrieveOCSPStapleData.Success 지표와 RetrieveOCSPStapleData 로그 항목을 내보냅니다 CloudWatch. 지표와 로그 항목은 OCSP 응답 검색과 관련된 문제를 감지하는 데 도움이 될 수 있습니다. 자세한 내용은 서버 인증서 OCSP 스테이플링 지표서버 인증서 OCSP 로그 항목 단원을 참조하세요.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.