투케이2K

95. (Aws/Amazon) [Aws Iot Core] AWS 신뢰할 수 있는 사용자 ( Trust User ) 에 의한 App To Device 프로비저닝 프로세스 정리 본문

Aws (Amazon)

95. (Aws/Amazon) [Aws Iot Core] AWS 신뢰할 수 있는 사용자 ( Trust User ) 에 의한 App To Device 프로비저닝 프로세스 정리

투케이2K 2025. 7. 28. 20:12
728x90

[개발 환경 설정]

개발 환경 : Aws / Amazon Web Services

 

[설명 정리]

// --------------------------------------------------------------------------------------
[개발 및 환경]
// --------------------------------------------------------------------------------------

- 인프라 : Aws / Amazon Web Services


- 기술 구분 : Aws / Iot Core / Provisioning


- 사전) Aws Iot Core 간단 설명 : 

  >> AWS IoT 는 IoT 디바이스를 다른 디바이스 및 AWS 클라우드 서비스에 연결하는 클라우드 서비스를 제공합니다.

  >> 디바이스가에 연결할 수 있는 경우 AWS IoT는 AWS 가 제공하는 클라우드 서비스에 디바이스를 AWS IoT 연결할 수 있습니다.

  >> AWS IoT Core 메시지 브로커는 MQTT 및 MQTT over WSS 프로토콜을 사용하여 메시지를 게시하고 구독하는 디바이스 및 클라이언트를 지원합니다. 
  
    - HTTPS 프로토콜을 사용하여 메시지를 게시하는 디바이스와 클라이언트도 지원합니다.


- 사전) AWS 신뢰할 수 있는 사용자 ( Trust User ) 에 의한 프로비저닝  간단 설명 : 

  >> 신뢰할 수 있는 사용자에 의한 프로비저닝은 CSR (Certificate Signing Request) 인증서 신청 요청 후 응답 받은 인증서를 기기에 전달해 프로비저닝을 수행하는 방식입니다.

    - 클레임 프로비저닝과 가장 큰 차이로는 클레임 프로비저닝는 초기 프로비저닝 수행에 필요한 인증서를 기기에 내장

  >> 신뢰할 수 있는 사용자에 의한 프로비저닝을 수행하기 위해서는 신뢰할 수 있는 사용자의 액세스 및 권한을 관리해야 합니다

    - 신뢰할 수 있는 사용자를 인증하고 이 절차를 수행하는 데 필요한 AWS IoT 기능 및 API 작업에 대한 액세스 권한을 부여하는 신뢰할 수 있는 사용자에 대한 계정을 제공 및 유지 관리

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[설 명]
// --------------------------------------------------------------------------------------

1. 신뢰할 수 있는 사용자가 프로비저닝 모바일 앱 또는 웹 서비스에 로그인합니다.


2. 모바일 앱 또는 웹 애플리케이션은 IAM 역할 (AccessKey, SecretKey) 을 사용해 CreateProvisioningClaim 을 호출하여 AWS IoT 에서 임시 프로비저닝 클레임 인증서를 가져옵니다.

  >> 보안을 위해 CreateProvisioningClaim 에서 반환한 임시 프로비저닝 클레임 인증서는 5분 후에 만료됩니다.
  
  >> 다음 단계에서는 임시 프로비저닝 클레임 인증서가 만료되기 전에 유효한 인증서를 반환해야 합니다.
  
  >> 임시 프로비저닝 클레임 인증서는 계정의 인증서 목록에 나타나지 않습니다.

  >> CreateProvisioningClaim 요청 예시 :

    - POST /provisioning-templates/templateName/provisioning-claim HTTP/1.1

  >> CreateProvisioningClaim 응답 예시 :

    HTTP/1.1 200
    Content-type: application/json

    {
        "certificateId": "string", ----------> 인증서의 ID입니다
        "certificatePem": "string", ----------> 인증서 Pem
        "expiration": number, ----------> 인증서 만료 시간
        "keyPair": { ----------> 프로비저닝 클레임 키 쌍
            "PrivateKey": "string",
            "PublicKey": "string"
        }
    }


3. 모바일 앱 또는 웹 애플리케이션은 Wi-Fi 자격 증명과 같은 필수 구성 정보와 함께 임시 프로비저닝 클레임 인증서를 디바이스에 제공합니다.

  >> 와이파이 SSID 정보와 PW 정보를 앱에서 입력 받습니다

  >> App To Device 간 TCP/IP 소켓 통신 연결을 수행합니다

  >> App To Device 간 프로비저닝에 필요한 정보를 전달합니다 (Wifi Ssid, Wifi Pw, 임시 프로비저닝 클레임 인증서)


4. 디바이스는 임시 프로비저닝 클레임 인증서를 사용하여 AWS IoT 디바이스 클라이언트를 통해 AWS IoT 에 연결합니다.


5. 디바이스는 AWS IoT 임시 프로비저닝 클레임 인증서로에 연결한 후 5분 이내에 사물 인증서와 프라이빗 키를 가져옵니다.

  >> AWS IoT CreateKeysAndCertificate 를 호출하여 인증 기관을 거쳐 새 AWS 인증서와 프라이빗 키를 생성합니다

    - CreateCertificateFromCsr 을 호출 인증서를 생성하는 방법도 있습니다

  >> CreateKeysAndCertificate 요청 예시 : 

    - 빈 메시지 페이로드와 함께 $aws/certificates/create/payload-format 에 메시지를 게시합니다.

    - payload-format : cbor 또는 json와 같은 메시지 페이로드 형식입니다.

  >> CreateKeysAndCertificate 응답 예시 : 

    {
        "certificateId": "string", -------------------> 인증서 ID입니다
        "certificatePem": "string", -------------------> PEM 형식의 인증서 데이터입니다
        "privateKey": "string", -------------------> 프라이빗 키입니다
        "certificateOwnershipToken": "string" -------------------> 프로비저닝하는 동안 인증서의 소유권을 증명하는 토큰입니다
    }


6. 디바이스는 미리 정의 된 템플릿에 RegisterThing 사물 등록 요청을 수행합니다

  >> 템플릿에 사물 등록 요청을 수행하며, 등록이 완료 된 경우 Response ThingName 을 발급 받습니다

  >> RegisterThing 요청 예시 : 

    - $aws/provisioning-templates/templateName/provision/payload-format 에 메시지를 게시합니다.

    {
        "certificateOwnershipToken": "string", -------------> 인증서 소유권을 증명하는 토큰입니다.
        "parameters": { ----------------> 템플릿 등록 요청 페이로드 전문입니다
            "string": "string",
            ...
        }
    }

  >> RegisterThing 응답 예시 : 

    - $aws/provisioning-templates/templateName/provision/payload-format/accepted 을 구독합니다.

    {
        "deviceConfiguration": { -------------> 템플릿에 정의된 디바이스 구성입니다.
            "string": "string",
            ...
        },
        "thingName": "string" ----------------> 프로비저닝 중에 생성된 IoT 사물의 이름입니다.
    }


7. 디바이스는 임시 프로비저닝 클레임 인증서로 시작한 세션과의 연결을 끊고, 사물 인증서를 사용하여 다시 AWS 연결을 수행합니다


8. 디바이스는 응답 받은 ThingName 을 사용해 특정 Shadow Topic 을 구독하고, Publish MQTT 통신을 수행합니다

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[Aws Iot Core] Fleet provisioning 플릿 프로비저닝 수행 방법 정리 - 클레임 인증서 , 신뢰할 수 있는 사용자

https://blog.naver.com/kkh0977/223779257161?trackingCode=blog_bloghome_searchlist


[AWS 플릿 프로비저닝을 사용하여 디바이스 인증서가 없는 디바이스 프로비저닝]

https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/provision-wo-cert.html

// --------------------------------------------------------------------------------------
 
728x90
반응형
Comments