

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

# coreHTTP 상호 인증 데모
<a name="core-http-ma-demo"></a>

**중요**  <a name="deprecation-message-demo"></a>
이 데모는 더 이상 사용되지 않는 Amazon-FreeRTOS 리포지토리에서 호스팅됩니다. 새 프로젝트를 생성할 때는 [여기서 시작](freertos-getting-started-modular.md)하는 것이 좋습니다. 현재 사용되지 않는 Amazon-FreeRTOS 리포지토리를 기반으로 하는 기존 FreeRTOS 프로젝트가 이미 있는 경우에는 [Amazon-FreeRTOS Github 리포지토리 마이그레이션 가이드](github-repo-migration.md) 섹션을 참조하세요.

## 소개
<a name="core-http-ma-demo-intro"></a>

coreHTTP(상호 인증) 데모 프로젝트에서는 클라이언트와 서버 간 상호 인증을 통한 TLS를 사용하여 HTTP 서버에 연결하는 방법을 보여줍니다. 이 데모에서는 mbedTLS 기반 전송 인터페이스 구현을 사용하여 서버 및 클라이언트 인증 TLS 연결을 설정하고 HTTP의 요청 응답 워크플로를 보여줍니다.

**참고**  
FreeRTOS 데모를 설정하고 실행하려면 [FreeRTOS 시작하기](freertos-getting-started.md)의 단계를 따릅니다.

## 기능
<a name="core-http-ma-demo-functionality"></a>

이 데모는 다음 작업을 완료하는 방법을 보여주는 예제가 포함된 단일 애플리케이션 태스크를 생성합니다.
+  AWS IoT 엔드포인트의 HTTP 서버에 연결합니다.
+ POST 요청 전송
+ 응답 수신
+ 서버 연결 해제

이러한 단계를 완료하면 데모에서 다음 스크린샷과 비슷한 출력이 생성됩니다.

![\[AWS IoT 데모 초기화, TLS 세션 설정, HTTP POST 요청 및 성공적인 데모 완료를 나타내는 메모리 지표를 보여주는 로그 출력입니다.\]](http://docs.aws.amazon.com/ko_kr/freertos/latest/userguide/images/coreHTTP.output.png)


 AWS IoT 콘솔은 다음 스크린샷과 유사한 출력을 생성합니다.

![\[AWS IoT 2020년 11월 20일 19:09:09 UTC에 주제에 게시된 "Hello from AWS IoT console" 메시지를 보여주는 콘솔.\]](http://docs.aws.amazon.com/ko_kr/freertos/latest/userguide/images/coreHTTP.console.png)


## 소스 코드 구성
<a name="core-http-s3-ma-demo-source-code-organization"></a>

데모 소스 파일은 이름이 `http_demo_mutual_auth.c`이며 `freertos/demos/coreHTTP/` 디렉터리 및 [GitHub](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c) 웹 사이트에서 찾을 수 있습니다.

## AWS IoT HTTP 서버에 연결
<a name="core-http-ma-demo-connecting"></a>

[ connectToServerWithBackoffRetries](https://github.com/aws/amazon-freertos/blob/main/demos/common/http_demo_helpers/http_demo_utils.c#L131-L170) 함수는 AWS IoT HTTP 서버에 상호 인증된 TLS 연결을 시도합니다. 연결이 실패하면 제한 시간이 경과한 후 다시 시도합니다. 최대 시도 횟수에 도달하거나 최대 제한 시간 값에 도달할 때까지 제한 시간 값은 기하급수적으로 증가합니다. `RetryUtils_BackoffAndSleep` 함수는 기하급수적으로 증가하는 제한 시간 값을 제공하고 최대 시도 횟수에 도달하면 `RetryUtilsRetriesExhausted`를 반환합니다. `connectToServerWithBackoffRetries` 함수는 구성된 시도 횟수 이후에도 브로커에 대한 TLS 연결을 설정할 수 없는 경우 실패 상태를 반환합니다.

## HTTP 요청 전송 및 응답 수신
<a name="core-http-ma-demo-send-receive"></a>

[ prvSendHttpRequest](https://github.com/aws/amazon-freertos/blob/main/demos/coreHTTP/http_demo_mutual_auth.c#L402-L507) 함수는 AWS IoT HTTP 서버로 POST 요청을 보내는 방법을 보여줍니다. 에서 REST API를 요청하는 방법에 대한 자세한 내용은 [디바이스 통신 프로토콜 - HTTPS](https://docs.aws.amazon.com/iot/latest/developerguide/http.html)를 AWS IoT참조하세요. 응답은 동일한 coreHTTP API 직접 호출 `HTTPClient_Send`로 수신됩니다.