이 포스팅에 실린 실습은 AWS CLI가 설치되어 있고, AWS credentials이 설정되어 있는 상태에서 진행했습니다. 서버와 하드웨어 사이의 TCP 연결을 구현하지 않고 AWS IoT를 이용해 MQTT 프로토콜로 데이터를 송수신하는 환경을 구성해보겠습니다. 진행을 위해 AWS IoT와 NodeJS가 필요합니다.


1.AWS IoT Core로 접속해 사물을 생성합니다. 테스트로 1개만 사용할 것이므로 “단일 AWS IoT 사물”로 등록합니다.

01
02



2.‘인증서 없이 사물 생성’을 클릭합니다. 인증서는 사물 등록 후에 생성할 예정입니다.

03



3.사물이 정상적으로 등록되었는지 확인합니다.

04



4.루트 CA 인증서를 생성합니다. 4-1.개인키를 생성하기 전, openssl 설정 파일을 추가해 아래 내용으로 저장합니다. 아래와 같이 진행하는 이유는 basicConstraints = true로 설정하기 위해서입니다.

05


4-2.개인키를 생성합니다.

openssl genrsa -out rootCA.key 2048
06


4-3.루트 인증서를 생성합니다.

openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem -config rootCA_openssl.conf -extensions v3_ca
07



5.인증서를 생성합니다. 5-1.AWS IoT 등록 코드를 확인합니다.

aws iot —region=ap-northeast-1 get-registration-code
08


5-2.개인키를 생성합니다.

openssl genrsa -out verificationCert.key 2048
09


5-3.CSR을 생성합니다. 앞서 5-1에서 확인한 등록코드를 Common Name 항목에 입력합니다.

openssl req -new -key verificationCert.key -out verificationCert.csr
10


5-4.인증서를 생성합니다.

openssl x509 -req -in verificationCert.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out verificationCert.pem -days 500 -sha256
11


5-5.CA 인증서와 개인 인증서 파일들을 확인합니다.

12


5-6.AWS에 인증서를 등록합니다.

aws iot register-ca-certificate —ca-certificate file://rootCA.pem —verification-cert file://verificationCert.pem —region=ap-northeast-2
13


5-7.AWS에 인증서를 활성화합니다.

aws iot update-ca-certificate --certificate-id 인증서 등록 후 응답으로 오는 certificateId 값 --new-status ACTIVE --region=ap-northeast-2


예)

aws iot update-ca-certificate —certificate-id AAAAAABDADFDF1ABADFDFDFDF### —new-status ACTIVE —region=ap-northeast-2
14


5-8.AWS에 인증서 자동 등록 활성화를 켭니다.

15



6.AWS 콘솔에 접속해 CA 인증서 등록을 확인합니다.

16



7.AWS 콘솔에서 인증서를 생성합니다.

17


7-1.원클릭 인증서 생성을 클릭합니다.

18


7-2.활성화를 클릭하면 완료됩니다.

19


8.인증서와 사물을 연결합니다.

20



9.상호 작용 탭에서 디바이스를 연결합니다.

21



10.환경에 맞게 선택하여 다운로드합니다.

22



11.압축을 해제해 srart.sh를 실행하고, 연결 대기합니다.

23



12.AWS IoT 테스트 접속 후, topic 1으로 메시지를 게시합니다.

24



13.터미널을 확인합니다.

25



이것으로 AWS IoT 로컬 환경이 구성되었습니다. AWS IoT를 사용하면 서버와 하드웨어를 제어하는 클라이언트 간 통신을 쉽게 하도록 다양한 구성을 할 수 있습니다. 모든 포맷은 JSON 포맷으로 송수신하며, MQTT(Message Queueing Telemetry Transport) 방식이라 양방향 통신을 쉽게 처리하고 전송할 수 있을 겁니다.


참고
자세한 MQTT - Publish/Subscribe 모델은 여기를 클릭하세요.


장현준 팀장 | R&D 개발3팀
janghj@brandi.co.kr
브랜디, 오직 예쁜 옷만