ATECC608A-TNGTLS 확인(AWS IoT Multi-Account Registration 연결 테스트)(ATECC608A-TNGTLS AWS IoT connection test by using Multi-Account Registration)

소개



이전에 NXP SE050 검증 (AWS IoT Multi-Account Registration 연결 테스트)에서 실시한 내용을 Microchip사의 ATECC608A의 Trust and Go라는 제품으로 추시한다.

마지막으로 정리한 것처럼 자신의 CA를 구축하고 그것을 등록, 공통 CA로 인증된 디바이스를 연결시키는 Just In Time Registration보다 간소화한 Multi-Account-Registration을 이용하여 칩 메이커의 CA를 이용하여 디바이스를 인증시키는 흐름이 된다.


ATECC608A의 Trust and Go



ATECC608A는 16개의 슬롯 역할, 권한을 개별적으로 설정할 수 있는 Config를 설정하여 사용할 수 있게 된다.
또한 인증서는 정의 파일을 생성하고 장치와 세트에서 사용합니다.
그러나 이 설정과 생성이 난해하기 때문에, 미리 설정된 디바이스로서 판매되고 있다.
특히 Trust and Go는 칩을 구입한 단계에서 쓰여진 증명서의 대장을 입수할 수 있을 것 같다.

Microchip Direct 에서 Trust and Go를 구입해 보았습니다.


3/3에 주문하여 3/20에 도착했다. 작은 로트로 프로그램 받는 수고를 생각하면 이런 것일 것이다.

이 Order History 화면에서 "Download Manifest"를 클릭하면 json 파일을 다운로드 할 수 있습니다.
이 JSON의 파일 안에 오더 분의 증명서가 들어가 있는 형태.

AWS 측 준비



AWS CLI에서 설정을 수행합니다.

환경
aws --version
aws-cli/2.0.56 Python/3.7.7 Windows/10 exe/AMD64

이번 검증을 한 Git 리포지토리를 복제한다.
git clone --recursive https://github.com/kmwebnet/ECC608-TNG-AWS-Connect.git
cd ECC608-TNG-AWS-Connect

우선, manifest file로부터 증명서를 추출하는 스크립트를 실행해, certs/폴더내에 PEM파일로서 보존한다.
pip install python-jose[cryptography]
manifestdecoder.py --manifest <マニフェストファイル>

AWS IoT에 디바이스 인증서를 등록한 후 할당할 정책을 생성합니다.
aws iot create-policy --policy-name wildcardpolicy --policy-document file://wildcardpolicy
{
    "policyName": "wildcardpolicy",
    "policyArn": "arn:aws:iot:ap-northeast-1:XXXXXXXXXXXX:policy/wildcardpolicy",
    "policyDocument": "{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"iot:Connect\",\n                \"iot:Publish\",\n                \"iot:Receive\",\n                \"iot:Subscribe\"\n            ],\n            \"Resource\": [\n                \"*\"\n            ]\n        }\n    ]\n}\n",
    "policyVersionId": "1"
}

나중에 장치 수만큼 인증서를 등록하고 정책을 할당합니다.
aws iot register-certificate-without-ca --certificate-pem file://certs/0123XXXXXXXXXXXX01 --status ACTIVE    
{
    "certificateArn": "arn:aws:iot:ap-northeast-1:XXXXXXXXXXXX:cert/56366869fd...96b05161",
    "certificateId": "56366869fd8....096b05161"
}

aws iot attach-policy --target "arn:aws:iot:ap-northeast-1:XXXXXXXXXXXX:cert/56366869....96b05161" --policy-name wildcardpolicy

마지막으로 기기에서 액세스할 엔드포인트 URL 가져오기
aws iot describe-endpoint --endpoint-type iot:Data-ATS
{
    "endpointAddress": "XXXXXXXXXX-ats.iot.ap-northeast-1.amazonaws.com"
}

ESP32 테스트



수중 ESP32 Devkit을 사용하여 AWS에 연결을 시도했다.

AWS IoT의 "테스트"화면에서 "test_topic/esp32"를 구독하면 연결이 가능했다.

좋은 웹페이지 즐겨찾기