최신 브라우저는 일반 HTTP 사이트를 "신뢰할 수 없음"으로 표시해 사용자 불신을 유발합니다. TLS 활성화 서버는 자물쇠 아이콘을 표시해 전문적 보안을 전달하며, 이는 디바이스 관리 애플리케이션에 필수적입니다.
ESP8266 와이파이 칩 & 미노우 서버(Minnow Server)
ESP8266은 단 1달러에 구매 가능한 인기 와이파이 칩입니다. 개발용으로는 USB 지원 개발 보드(약 3달러)가 펌웨어 플래싱을 간소화하고 외부 USB-TTL 컨버터 필요성을 없애줍니다.
80MHz 코어가 많은 애플리케이션에 적절하지만, TLS 암호화 같은 CPU 집약적 작업은 한계에 부딪힙니다. 이러한 제약을 이해하는 것이 리소스 제약 마이크로컨트롤러용 웹 애플리케이션 설계에 중요합니다.
이 가이드에서는 미노우 서버를 ESP8266에서 컴파일하고 배포하는 과정을 안내합니다. 저장소에 레퍼런스 예제와 소스 코드가 포함되어 있습니다.
시작하기
esp-open-rtos 프로젝트의 사전 구성된 FreeRTOS/lwIP 환경을 사용하며, 사용자 친화적 웹 기반 IDE와 번들로 제공됩니다. 복잡한 로컬 설정 없이도 됩니다.
ESP8266 FreeRTOS/lwIP IDE 다운로드
리얼 타임 로직 방문해 IDE 다운로드. 패키지에는 VMware 또는 VirtualBox(비상업적 용도 VMware 무료)와 임베디드 TLS 스택(SharkSSL)이 포함됩니다. VM 실행 후 웹 기반 IDE가 USB 연결된 ESP8266을 감지해 플래싱 준비 상태로 표시합니다.
그림 1은 가상 머신과 웹 IDE 인터페이스를 보여줍니다.
그림 1: VM의 IP 주소에 연결된 웹 기반 IDE. (출처: Real Time Logic)
브레드보드 LED는 선택 사항이며, 샘플 애플리케이션에서 외부 LED 제어를 원할 때만 필요합니다.
VM의 IP 주소가 다를 수 있으므로 VM 창 안을 클릭하고 Enter를 눌러 확인한 후 브라우저에서 해당 주소를 열어 IDE를 실행하세요.
미노우 서버 예제 설치
미노우 서버 예제는 IDE 패키지에 포함되지 않아 수동 설치가 필요합니다. 다음 스크린샷은 VM 웹 쉘에서 설치 명령 실행 모습을 보여줍니다.
그림 2: 리눅스 웹 쉘에 붙여넣어진 미노우 서버 설치 명령. (출처: Real Time Logic)
동영상 1: 미노우 서버 예제 다운로드·설치·컴파일·코드 업로드 방법. (출처: Real Time Logic)
보안 vs 비보안 동작
미노우 서버는 SharkSSL로 컴파일 시 기본적으로 TLS를 사용합니다. TLS 사용은 주로 인증서 관리의 관리적 오버헤드를 추가하지만 프로덕션 환경에서 종종 필수입니다. 동영상에서 브라우저에 CA 인증서 가져와 "인증서 오류" 경고 제거하는 방법을 시연합니다.
많은 임베디드 디바이스가 사설망에 상주하는데, 표준 인증 기관은 내부 IP나 호스트명에 인증서를 발급하지 않습니다. 해결책 중 하나는 자체 CA 운영입니다. 인증 기관 역할 수행 방법 튜토리얼이 이 과정을 안내합니다.
ESP8266이 느려 TLS 핸드셰이크가 초기 연결을 눈에 띄게 지연시킬 수 있습니다. 특히 브라우저가 동시에 여러 TCP 연결을 열 때 그렇습니다. 우리 싱글 페이지 애플리케이션 예제는 웹소켓을 활용해 CPU 제약 디바이스에 최적화되어 있습니다. 브라우저 동작과 마이크로컨트롤러 제약에 대한 더 많은 내용은 미노우 서버로 싱글 페이지 앱 만들기 튜토리얼 참조.