산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 사물 인터넷 기술

3달러 WiFi 장치에 보안 내장 웹 서버를 설치하는 방법

임베디드 개발을 시작하는 것은 어렵고 비용이 많이 들 수 있지만 이 기사에서는 안전한 임베디드 웹 서버가 있는 WiFi 칩에서 FreeRTOS와 lwIP TCP/IP 스택을 초고속 환경에서 30분 이내에 스핀업하는 방법을 보여 드리겠습니다. 비용 장치.

보안(TLS) 지원 서버를 사용하는 이유

브라우저는 브라우저 표시줄에서 표준(HTTP) 서버를 "신뢰할 수 없음"으로 플래그 지정하기 시작했으며(아래 그림 2 참조) 보안 서버가 최종 고객에게 더 신뢰할 수 있는 것처럼 보일 것입니다. 이에 대해서는 아래 보안 고려 사항 섹션에서 자세히 설명하겠습니다.

ESP8266 WiFi 칩과 미노우 서버

ESP8266은 1달러에 구입할 수 있지만 USB가 포함된 보드를 사용하는 것이 좋습니다. 펌웨어를 플래싱하려면 USB가 필요합니다. 온보드 USB 없이 USB-TTL 변환기 사용을 포함하는 추가 단계가 필요합니다. USB로 바로 사용할 수 있는 ESP8266 보드는 최저 $3에 구입할 수 있습니다.

저렴한 ESP8266 WiFi 칩은 학습 목적으로 적합하지만 특히 암호화 수행과 같은 CPU 집약적 작업에서는 느립니다. CPU 집약적인 작업에 느린 칩을 사용할 때는 디자인에 대해 정말로 생각해야 합니다.

ESP8266은 임베디드 칩에 좋은 80Mhz로 실행되지만 SPI 메모리를 통해 실행되는 코드로 인해 코드 실행이 느립니다. 이 장치에서 TLS 지원 서버를 실행하면 리소스가 제한된 마이크로컨트롤러의 실질적인 제한과 관련하여 실제 깨우기 호출을 제공하고 느린 마이크로컨트롤러에서 실행할 수 있는 것에 대한 훌륭한 소개를 제공합니다. 선택한 보안 웹 서버의 유형과 웹 애플리케이션 디자인은 느린 장치에서 중요합니다.

이 기사에서는 ESP8266에서 Minnow 서버를 컴파일하고 실행하는 방법을 설명합니다. 미노우 서버 및 참조 예제는 GitHub에서 사용할 수 있습니다.

나는 최근에 여기에 Embedded.com에서 Minnow 서버에 대한 기사를 게시했습니다. 이 기사에서는 최신 웹 기반 장치 관리 응용 프로그램을 만들기 위해 Minnow Server를 사용하는 방법을 설명합니다. 이 기사에서는 TLS를 사용할 때 소위 단일 페이지 애플리케이션(SPA)과 함께 WebSocket 서버를 사용할 때의 이점에 대해서도 설명합니다. ESP8266에 대해 동일한 예제 코드를 준비하고 컴파일할 것이기 때문에 이 기사를 읽는 것이 좋습니다.

시작하기

우리는 esp-open-rtos 프로젝트에서 제공하는 ESP8266 FreeRTOS/lwIP 환경을 사용할 것이지만 걱정하지 마십시오. 복잡한 esp-open-rtos 설정을 거칠 필요가 없습니다. 대신 사용하기 쉬운 웹 기반 IDE로 사전 구성되고 완전히 준비된 환경을 사용할 것입니다.

FreeRTOS/lwIP ESP8266 IDE 다운로드

Real Time Logic으로 이동하여 우리가 준비한 ESP8266 IDE를 다운로드합니다. 교육용으로 설계된 IDE에는 사용하기 쉬운 웹 기반 C 소스 코드 IDE와 함께 번들로 제공되는 사전 구성된 esp-open-rtos가 포함되어 있습니다. IDE에는 VmWare 또는 VirtualBox가 필요합니다. 나는 사용하기 쉽기 때문에 VirtualBox보다 VmWare를 선호합니다. VmWare는 비상업적 용도로 무료입니다.

ESP8266 IDE에는 TLS 스택(SharkSSL)도 포함되어 있으며, Minnow 서버는 SharkSSL로 컴파일할 때 자동으로 TLS를 사용합니다.

ESP8266 보드 없이 ESP8266 IDE 사용을 시작할 수 있지만 컴파일된 코드를 업로드하고 실행할 수는 없습니다. 즉, IDE를 다운로드하고 ESP8266에서 코드를 실행하는 것을 제외하고 이 튜토리얼의 모든 단계를 따를 수 있습니다.

아래 그림 1의 스크린샷은 가상 머신과 가상 머신에 연결된 웹 기반 IDE를 보여줍니다. 가상 머신이 ESP8266 USB 연결의 소유권을 어떻게 얻었는지 확인하십시오. 웹 기반 IDE가 이를 감지하고 ESP8266이 연결되어 있고 새 펌웨어로 플래시할 준비가 된 것으로 표시합니다.

더 큰 이미지를 보려면 클릭하십시오.

그림 1:가상 머신의 IP 주소에 연결된 웹 기반 IDE. (출처:실시간 로직)

그림 1의 스크린샷은 브레드보드를 ​​통해 LED에 연결된 ESP8266을 보여줍니다. 예제 애플리케이션에서 사용하는 외부 LED를 제어하지 않으려면 추가 LED나 브레드보드가 필요하지 않습니다.

VM의 IP 주소는 그림 1과 대부분 다를 수 있습니다. 가상 머신 창에서 IP 주소를 클릭해야 합니다. 창이 비어 있으면 창을 클릭한 다음 Enter 키를 누릅니다. 웹 IDE를 열려면 브라우저에 이 IP 주소를 입력해야 합니다.

미노우 서버 설치 및 예제 코드

미노우 서버 참조 예제는 ESP8266 IDE에 포함되어 있지 않으며 별도로 설치해야 합니다. 그림 1은 'ESP/ms' 디렉토리에 이미 설치된 Minnow 서버의 예를 보여준다. Minnow Server는 Linux 명령줄에서 설치해야 하지만 Linux를 사용하지 않았더라도 걱정하지 마십시오. 우리가 준비한 명령을 복사하여 붙여넣기만 하면 됩니다. 다음 그림은 http://vm-ip-address/webshell/에서 사용할 수 있는 Linux 웹 셸에 붙여넣는 Minnow Server 설치 명령의 스크린샷을 보여줍니다.

더 큰 이미지를 보려면 클릭하십시오.

그림 2:Linux 웹 셸에 붙여넣은 Minnow 서버 설치 명령. (출처:실시간 로직)

브라우저에 웹 셸 URL을 입력하면 로그인하라는 메시지가 표시됩니다. 사용자 이름은 sharkssl이고 ​​비밀번호는 SharkSSL입니다.

GitHub의 ESP8266 자습서에서는 가상 머신을 구성하고, 모든 것을 설치하고, 웹 서버 예제를 컴파일하고, 펌웨어를 플래시하는 방법을 설명합니다. 다음 비디오는 모든 것을 단계별로 설명하여 프로세스를 단순화합니다.

동영상 1:Minnow Server 예제 다운로드 및 설치, 코드 컴파일 및 업로드 방법. (출처:실시간 로직)

보안 vs. 비보안

Minnow 서버는 보안 또는 비보안 모드에서 사용할 수 있으며 ESP8266 IDE 및 SharkSSL과 함께 사용할 때 자동으로 보안 모드(TLS)를 사용합니다. 장치에서 TLS 지원 웹 서버를 사용하면 복잡성이 추가되고 최종 사용자는 SSL 인증서를 처리해야 하는 관리 부담을 갖게 됩니다. 위 영상에서는 브라우저에 CA(Certificate Authority) 인증서를 설치하여 브라우저에 표시되는 인증서 오류를 제거하는 방법을 보여드립니다. CA 인증서는 웹 서버 예제에서 인증서에 서명하는 데 사용된 인증서입니다.

내장형 장치는 일반적으로 보호된 사설 네트워크에 설치되지만 많은 고객은 여전히 ​​웹 서버 연결에 TLS를 사용하도록 요구합니다. 잘 알려진 인증 기관이 IP 주소 또는 비표준(사설 네트워크) 이름에 서명하지 않기 때문에 사설 네트워크에서 TLS 사용 서버를 사용하는 것은 문제가 됩니다. 한 가지 옵션은 자신의 인증 기관이 되는 것입니다. 이에 대해 자세히 알아보려면 자습서 인증 기관 역할을 하는 방법을 확인하세요.

위에서 언급했듯이 ESP8266은 느립니다. TLS는 CPU를 많이 사용하므로 연결하고 연결하는 데 시간이 걸립니다. 통신을 위해 WebSocket을 사용하는 단일 페이지 응용 프로그램 예제는 CPU 제약이 있는 장치에 최적화되어 있지만 초기 비대칭 암호화(TLS 핸드셰이크)는 여전히 시간이 걸립니다. 특히 좋은 설계 관행을 따르지 않고 모든 TCP 연결을 여는 일부 브라우저의 경우 더욱 그렇습니다. 전체 TLS 핸드셰이크가 필요합니다. 최신 웹 브라우저와 느린 마이크로컨트롤러의 문제에 대해 자세히 알아보려면 문제에 대해 자세히 설명하는 Minnow 서버로 단일 페이지 앱 만들기 자습서를 참조하세요.


사물 인터넷 기술

  1. 클라우드 기술을 보호하는 방법은 무엇입니까?
  2. Google Cloud에 WordPress를 설치하는 방법
  3. IoT 제품 및 솔루션을 안전하게 만드는 방법
  4. 필요한 IoT 모듈 유형을 식별하는 방법
  5. 웹에서 습도/온도 가져오기
  6. 웹 서버로서의 Raspberry Pi 4 [자신의 웹사이트 만들기]
  7. IoT 기기 임베디드 하드웨어 해킹 소개
  8. WiFi 통화란 무엇입니까? 작동 원리는 무엇입니까?
  9. 도크 레벨러 설치 방법
  10. 서버 자동화가 FANG에 도달한 방법