

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

# 사용자 지정 클라이언트 인증서 검증
<a name="customize-client-auth"></a>

AWS IoT Core 는 X.509 클라이언트 인증서에 대한 사용자 지정 클라이언트 인증서 검증을 지원하여 클라이언트 인증 관리를 개선합니다. 이 인증서 검증 방법은 사전 인증 인증서 검사라고도 하며, 이 검사에서는 자체 기준(Lambda 함수에 정의)을 기반으로 클라이언트 인증서를 평가하고 클라이언트 인증서 또는 인증서의 서명 인증 기관(CA) 인증서를 취소하여 클라이언트가 AWS IoT Core에 연결되지 않도록 합니다. 예를 들어 [온라인 인증서 상태 프로토콜(OCSP)](https://en.wikipedia.org/wiki/Online_Certificate_Status_Protocol) 또는 [인증서 해지 목록(CRL)](https://en.wikipedia.org/wiki/Certificate_revocation_list) 엔드포인트를 지원하는 검증 기관과 비교하여 인증서의 상태를 검증하고 취소된 인증서가 있는 클라이언트에 대한 연결을 방지하는 자체 인증서 해지 검사를 생성할 수 있습니다. 클라이언트 인증서를 평가하는 데 사용되는 기준은 Lambda 함수(사전 인증 Lambda라고도 함)에 정의됩니다. 도메인 구성에서 엔드포인트 세트를 사용해야 하며 [인증 유형](protocols.md#connection-protocol-auth-mode)은 X.509 인증서여야 합니다. 또한 클라이언트는 연결할 때 [서버 이름 표시(SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) 확장을 제공해야 합니다 AWS IoT Core.

**참고**  
이 기능은 AWS GovCloud (US) 리전에서 지원되지 않습니다.

**Topics**
+ [1단계:에 X.509 클라이언트 인증서 등록 AWS IoT Core](#client-auth-cert-verification)
+ [2단계: Lambda 함수 생성](#customize-client-auth-lambda)
+ [3단계: Lambda 함수 AWS IoT 호출 권한 부여](#customize-client-configuration-grant-permission)
+ [4단계: 도메인에 대한 인증 구성 설정](#customize-client-configuration)

## 1단계:에 X.509 클라이언트 인증서 등록 AWS IoT Core
<a name="client-auth-cert-verification"></a>

아직 등록하지 않은 경우에 [X.509 클라이언트 인증서를](https://docs.aws.amazon.com//iot/latest/developerguide/x509-client-certs.html) 등록하고 활성화합니다 AWS IoT Core. 그렇지 않은 경우 다음 단계로 건너뜁니다.

에 클라이언트 인증서를 등록하고 활성화하려면 다음 단계를 AWS IoT Core따릅니다.

1. [를 사용하여 직접 클라이언트 인증서를 생성하는 AWS IoT](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-create.html) 경우. 이러한 클라이언트 인증서는에 자동으로 등록됩니다 AWS IoT Core.

1. [자체 클라이언트 인증서를 생성하는](https://docs.aws.amazon.com//iot/latest/developerguide/device-certs-your-own.html) 경우 [다음 지침에 따라 인증서를 등록합니다 AWS IoT Core](https://docs.aws.amazon.com//iot/latest/developerguide/register-device-cert.html).

1. 클라이언트 인증서를 활성화하려면 [다음 지침](https://docs.aws.amazon.com//iot/latest/developerguide/activate-or-deactivate-device-cert.html)을 따르세요.

## 2단계: Lambda 함수 생성
<a name="customize-client-auth-lambda"></a>

인증서 확인을 수행하고 구성된 엔드포인트에 대한 모든 클라이언트 연결 시도에 대해 호출되는 Lambda 함수를 생성해야 합니다. 이 Lambda 함수를 생성할 때는 [첫 번째 Lambda 함수 생성](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html)의 일반 지침을 따릅니다. 또한 Lambda 함수가 다음과 같이 예상 요청 및 응답 형식을 준수하는지 확인합니다.

**Lambda 함수 이벤트 예제**

```
{
	"connectionMetadata": {
		"id": "string"
	},
	"principalId": "string",
	"serverName": "string",
	"clientCertificateChain": [
		"string",
		"string"
	]
}
```

`connectionMetadata`  
클라이언트의 AWS IoT Core에 대한 연결과 관련된 메타데이터 또는 추가 정보입니다.

`principalId`  
TLS 연결에서 클라이언트와 연결된 위탁자 식별자입니다.

`serverName`  
[서버 이름 표시(SNI)](https://www.rfc-editor.org/rfc/rfc3546#section-3.1) 호스트 이름 스트링입니다. AWS IoT Core 는 디바이스가 [SNI 확장](https://www.rfc-editor.org/rfc/rfc3546#section-3.1)을 Transport Layer Security (TLS) 프로토콜로 전송하고 `host_name` 필드에 전체 엔드포인트 주소를 제공하도록 요구합니다.

`clientCertificateChain`  
클라이언트의 X.509 인증서 체인을 나타내는 문자열 배열입니다.

**Lambda 함수 응답 예제**

```
{
	"isAuthenticated": "boolean"
}
```

`isAuthenticated`  
요청 인증 여부를 나타내는 부울 값입니다.

**참고**  
Lambda 응답에서 추가 인증 및 권한 부여를 진행하려면 `isAuthenticated`가 반드시 `true`여야 합니다. 그렇지 않으면 IoT 클라이언트 인증서를 비활성화하고 추가 인증 및 권한 부여를 위해 X.509 클라이언트 인증서를 사용한 사용자 지정 인증을 차단할 수 있습니다.

## 3단계: Lambda 함수 AWS IoT 호출 권한 부여
<a name="customize-client-configuration-grant-permission"></a>

Lambda 함수를 생성한 후 [add-permission](https://docs.aws.amazon.com//cli/latest/reference/lambda/add-permission.html) CLI 명령을 사용하여 AWS IoT 에 호출 권한을 부여해야 합니다. 이 Lambda 함수는 구성된 엔드포인트에 연결할 때마다 간접적으로 호출됩니다. 자세한 내용은 [Lambda 함수 호출 권한 부여 AWS IoT 를 참조하세요](custom-auth-authorize.md).

## 4단계: 도메인에 대한 인증 구성 설정
<a name="customize-client-configuration"></a>

다음 섹션에서는 AWS CLI를 사용하여 사용자 지정 도메인에 대한 인증 구성을 설정하는 방법을 설명합니다.

### 도메인에 대한 클라이언트 인증서 구성 설정(CLI)
<a name="customize-client-auth-cli"></a>

도메인 구성이 없는 경우 [https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/create-domain-configuration.html) CLI 명령을 사용하여 생성합니다. 도메인 구성이 이미 있는 경우 [https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html](https://docs.aws.amazon.com//cli/latest/reference/iot/update-domain-configuration.html) CLI 명령을 사용하여 도메인에 대한 클라이언트 인증서 구성을 업데이트합니다. 이전 단계에서 생성한 Lambda 함수의 ARN을 추가해야 합니다.

```
aws iot create-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config 'clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

```
aws iot update-domain-configuration \
    --domain-configuration-name domainConfigurationName \
    --authentication-type AWS_X509|CUSTOM_AUTH_X509 \
    --application-protocol SECURE_MQTT|HTTPS \
    --client-certificate-config '{"clientCertificateCallbackArn":"arn:aws:lambda:us-east-2:123456789012:function:my-function:1"}'
```

`domain-configuration-name`  
도메인 구성의 이름입니다.

`authentication-type`  
도메인 구성의 인증 유형입니다. 자세한 내용은 [인증 유형 선택](protocols.md#connection-protocol-auth-mode)을 참조하세요.

`application-protocol`  
 AWS IoT Core와 통신하는 데 사용하는 디바이스의 애플리케이션 프로토콜입니다. 자세한 내용은 [애플리케이션 프로토콜 선택](protocols.md#protocol-selection)을 참조하세요.

`client-certificate-config`  
도메인의 클라이언트 인증 구성을 지정하는 객체입니다.

`clientCertificateCallbackArn`  
새 연결이 설정될 때 TLS 계층에서 AWS IoT 호출하는 Lambda 함수의 Amazon 리소스 이름(ARN)입니다. 사용자 지정 클라이언트 인증서 검증을 수행하도록 클라이언트 인증을 사용자 지정하려면 이전 단계에서 생성한 Lambda 함수의 ARN을 추가해야 합니다.

자세한 내용은 *AWS IoT API 참조*의 [CreateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_CreateDomainConfiguration.html) 및 [UpdateDomainConfiguration](https://docs.aws.amazon.com//iot/latest/apireference/API_UpdateDomainConfiguration.html)을 참조하세요. 도메인 구성에 대한 자세한 내용은 [Domain configurations](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html)를 참조하세요.