반응형

이번시간에는 녹칸다와 함께 aws iot에 esp32가 업로드한 센서데이터를 C#윈폼에서 수신하는 방법에 대해서 알아보도록 하자!

ESP32로 MQTT SSL/TLS로 aws iot에 발행하는 방법은 아래 포스트를 참고하면 된다!

https://bota.tistory.com/2167

 

AWS IoT Core에 ESP32보드로 MQTT SSL/TSL로 데이터를 업로드 하는 방법!

이번시간에는 녹칸다와 함께 aws iot core에 ESP32로 데이터를 업로드하는 과정을 함께 보도록 함! aws 콘솔로 이동한다음 검색하는 곳에 iot core라고 검색해서 해당 서비스로 이동한다! "모든 디바이

bota.tistory.com

먼저 aws iot에서 디바이스를 등록하면 4가지 인증서를 다운받을 수 있다!

녹칸다는 아래와 같이 부르고 있다!

1.CA인증서

2.디바이스인증서

3.개인키

4.공개키

 

C#에서는 CA인증서와 디바이스인증서 2가지가 필요하다!

그런데 aws iot에서 다운받은 "디바이스인증키"가 C#에서는 사용이 안된다!(왜 안되는지는 녹칸다도 모름)

 

그래서 openssl이라는 툴로 디바이스 인증키를 변경해주어야한다!

지금부터 이 과정을 해보는 것이다!

새롭게 디바이스 인증키를 생성하기 위해서는 CA인증서, 디바이스 인증서, 개인키 3개가 필요하다!

(일단 기억만 해두자)

 

아래 링크를 눌러서 openssl 다운로드 페이지로 이동한다!

https://slproweb.com/products/Win32OpenSSL.html

하단에 가장 최신버전의 openssl의 exe파일을 다운로드 받는다!

next계속 눌러서 설치하면 된다!

제일 마지막에 도네이션할거냐고 물어보는데 확인 누르고 그냥 무시하면 된다!

(기본 경로에 설치할것)

이제 내 컴퓨터에서 명령프롬프트를 관리자권한으로 실행해야한다!

cmd라고 검색해서 "명령 프롬프트"에 마우스 오른쪽 버튼을 눌러서 관리자권한으로 실행한다!

반응형

그리고 윈도우 탐색기를 열어서 아래 경로로 이동한다!

"C:\Program Files\OpenSSL-Win64\bin"

위에서 언급한 CA인증서와 디바이스인증서 개인키를 여기다가 카피한다!

이렇게 해두면 환경변수 등록같은 불필요한 작업을 생략할 수 있다!

 

앞으로 입력해야할 몇가지 명령어가 있는데 녹칸다의 블로그는 복사가 안되어서 아래 파일로 첨부하니 열어서 복붙하면된다!

명령어.txt
0.00MB

조금전에 열어둔 명령프롬프트에 아래와 같이 입력해준다!

cd C:\Program Files\OpenSSL-Win64\bin

이어서 아래 명령어를 그대로 입력해준다!(위에 파일이 있으니 그안에 내용을 복붙하면된다)

openssl pkcs12 -export -in certificate.pem.crt -inkey private.pem.key -out certificate.cert.pfx -certfile AmazonRootCA1.pem

 

그럼 비밀번호를 두번 입력하라고 한다!

본인 마음대로 비밀번호를 지정하면 된다!

녹칸다는 "nockanda"라고 입력했다!

(조금 있다가 C#코드에 이 내용이 필요하므로 기억해두자)

지금까지 제대로 했다면 위 화면처럼 pfx파일이 생성되어 있을 것이다!

이게 C#에서 사용하게 될 디바이스 인증서가 된다!

새롭게 만든 디바이스 인증서와 CA인증서를 C#윈폼 프로젝트로 가지고 간다!

그리고 아래 코드를 활용한다!

ca2에 "nockanda" 부분이 새롭게 만든 디바이스 인증키의 비밀번호이다!

X509Certificate ca1 = new X509Certificate("AmazonRootCA1.pem");
X509Certificate2 ca2 = new X509Certificate2("certificate.cert.pfx", "비밀번호");
client = new MqttClient("엔드포인트",
  8883,
  true,
  ca1,
  ca2,
  MqttSslProtocols.TLSv1_2, RemoteCertificateValidationCallback);
  
bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
   // logic for validation here
   return true;
}

m2mqtt에 접속부분을 바꿔주면 접속이 가능해진다!

중요한것은 구독할때 qos를 0으로 해야한다는것이다!

그럼 aws iot에 esp32가 MQTT ssl/tls로 업로드하는 센서데이터가 C#윈폼화면에 나오게 된다!

결과 영상을 녹칸다네 유튜브에 업로드 해두었으니 참고~~~!

https://youtu.be/iWJBFWM9cBY

 

반응형
Posted by 덕력킹
,