NET(pc연습)과 IOT(pc연습)에서 SSL/TLS에 대한 기본 학습을 할 수 있다.
MQTT over TLS/SSL → WIFI 클라이언트 서버연동
이번에는 WIFI 모듈에 TLS/SSL 보안을 적용하여 MQTT 통신을 해볼 것이다.
각자 이전 장에서 CA, Server, Client 인증서와 키는 잘 준비 되었으리라 잠정하고 시작한다.
1. 시스템 구성
♦ PC에 MQTT 브로커를 실행시킨다.,
♦ 휴대폰의 MQTT 클라이언트를 아래 그림과 같이 토픽(Topic)을 구독, /toto 라는 토픽으로 메시지 발행(puslish) 하도록 준비한다.
♦ EMW3070은 /toto 라는 토픽(Topic)을 구독하고, /momo 라는 토픽의 메시지를 발행(puslish) 할 것이다..
.
2. PC에 MQTT Blocker/Server 설정, 모바일에는 MQTT Client 설정한다.
Step1. 노트패드를 실행 → mosquitto 설정파일(conf)을 오픈 → TLS/SSL 통신을 위한 설정을 기입 → 저장
|
Step2. PC에서는 먼저 MQTT 브로커/서버 IP 주소를 확인하고, MQTT 브로커(Blocker)를 실행시킨다. → mosquitto -v -c mosquitto.conf
Step3. mosquitto_sub -t /momo -p 8883 -h 192.168.0.6 – -cafile d:\cert\ca.crt – -cert d:\cert\client.crt – -key d:\cert\client.key
Step4. mosquitto_pub -t /soso -p 8883 -h 192.168.0.6 – -cafile d:\cert\ca.crt – -cert d:\cert\client.crt – -key d:\cert\client.key -m “hello, momo!”
3. WIFI 모듈의 MQTT Client 설정 → 명령절차 와 응답시퀀스
No | 절차 | 명령 및 조작 |
1 | 통신모듈을 AP에 연결 | AT+WJAP=EDWORKS2,edw12345\r |
응답 | OK, +WEVNET:STATION UP | |
2 | 이벤트 푸시(push)기능 사용 | AT+MQTTEVENT=ON\r |
응답 | OK | |
3 | MQTT 사용자이름, 암호 설정 | AT+MQTTAUTH=testman,test1234\r |
응답 | OK | |
4 | 호스트 및 포트번호 설정 | AT+MQTTSOCK=192.168.0.4,8883\r |
응답 | OK | |
SSL/TLS 보안 설정 | ||
5 | MQTT 인증서 검증 사용 | AT+MQTTCAVERIFY=ON,ON\r |
응답 | OK | |
6 | 전달할 인증서/암호키 종류 설정 | AT+SSLCERTSET=0\r |
응답 | OK | |
7 | 서버 루트인증서 보내기 | 서버 루트인증서 파일 내용 |
응답 | OK | |
8 | 전달할 인증서/암호키 종류 설정 | AT+SSLCERTSET=1\r |
응답 | OK | |
9 | 클라이언트 인증서 보내기 | 클라이언트 인증서 파일 내용 |
응답 | OK | |
10 | 전달할 인증서/암호키 종류 설정 | AT+SSLCERTSET=2\r |
응답 | OK | |
11 | 클라이언트 Private Key 파일 보내기 | 클라이언트 개인 키 파일 내용 |
응답 | OK | |
12 | SSL 암호화 사용 설정 | AT+MQTTSSL=ON\r |
응답 | OK | |
13 | 클라이언트 ID 설정 | AT+MQTTCID=momo\r |
응답 | OK | |
MQTT Parameter 설정 | ||
14 | MQTT Heartbeat 기간 설정 | AT+MQTTKEEPALIVE=10\r |
응답 | OK | |
15 | MQTT 자동 재연결 해제 | AT+MQTTRECONN=OFF\r |
응답 | OK | |
16 | MQTT Power-On 자동연결기능 설정 | AT+MQTTAUTOSTART=ON\r |
응답 | OK | |
17 | MQTT 서비스 시작 | AT+MQTTSTART\r |
응답 | OK, +MQTTEVENT:CONNECT,SUCCESS | |
18 | Topic-0 구독 설정 | AT+MQTTSUB=0,$aws/things/myLight/shadow/delete/accepted,1\r |
응답 | OK, +MQTTEVENT:0,SUBSCRIBE,SUCCESS | |
19 | Topic-1 구독 설정 | AT+MQTTSUB=1,$aws/things/myLight/shadow/update/delta,0\r |
응답 | OK, +MQTTEVENT:1,SUBSCRIBE,SUCCESS | |
20 | Topic-2 구독하기 | AT+MQTTSUB=2,$aws/things/myLight/shadow/update,0\r |
응답 | OK | |
+MQTTEVENT:2,SUBSCRIBE,SUCCESS | ||
21 | 게시(publish) 하기 설정 | AT+MQTTPUB=$aws/things/myLight/shadow/update,0\r |
응답 | OK | |
메시지 게시 또는 구독 | ||
22 | 데이터 게시하기 | AT+MQTTSEND=6\r |
응답 | > 응답으로 ” >” 수신하면 0.5초 이내 데이터 입력 → 123456 | |
+MQTTEVENT:PUBLISH,SUCCESS, | ||
동시에 동일한 주제(topic)을 돌려받는다, +MQTTRECV:2,6,123456 | ||
23 | Topic-1 구독 취소 | AT+MQTTUNSUB=1\r |
응답 | OK,+MQTTEVENT:1,UNSUBSCRIBE,SUCCESS | |
24 | MQTT 서비스 해제 | AT+MQTTCLOSE\r |
응답 | OK | |
+MQTTEVENT:CLOSE,SUCCESS |
4. 모바일에 MQTT Client 설정