Cara memasang server Web tertanam yang aman pada perangkat WiFi $3
Memulai pengembangan tertanam bisa jadi sulit dan mahal, tetapi dalam artikel ini saya akan menunjukkan kepada Anda cara menjalankan FreeRTOS dan tumpukan TCP/IP lwIP pada chip WiFi dengan server web tertanam yang aman dalam waktu kurang dari 30 menit dengan kecepatan super rendah perangkat biaya.
Mengapa menggunakan Server yang Diaktifkan Aman (TLS)?
Peramban telah mulai menandai server standar (HTTP) sebagai “Tidak tepercaya” di bilah peramban (lihat Gambar 2 di bawah), dan server yang aman akan tampak lebih tepercaya bagi pelanggan akhir. Saya akan membahasnya secara mendetail di bagian Pertimbangan Keamanan di bawah.
Chip WiFi ESP8266 dan Server Minnow
Anda bisa mendapatkan ESP8266 hanya dengan $1, tetapi saya sarankan menggunakan papan yang menyertakan USB. USB diperlukan untuk mem-flash firmware. Langkah tambahan yang mencakup penggunaan konverter USB ke TTL akan diperlukan tanpa USB terpasang. Papan ESP8266 siap pakai dengan USB dapat dibeli mulai dari $3.
Chip WiFi ESP8266 berbiaya rendah sangat bagus untuk tujuan pembelajaran , tetapi lambat, terutama dengan tugas-tugas intensif CPU seperti melakukan enkripsi. Anda benar-benar perlu memikirkan desain saat menggunakan chip lambat dengan tugas-tugas intensif CPU.
ESP8266 berjalan pada 80 Mhz yang bagus untuk chip yang disematkan, tetapi eksekusi kode sangat lambat dengan kode yang dieksekusi melalui memori SPI. Menjalankan server berkemampuan TLS pada perangkat ini memberikan peringatan nyata saat menghadapi keterbatasan praktis dengan mikrokontroler yang dibatasi sumber daya dan memberikan pengantar yang bagus tentang apa yang mungkin dijalankan pada mikrokontroler yang lambat. Jenis server web aman yang dipilih dan desain aplikasi web menjadi sangat penting untuk perangkat yang lambat.
Pada artikel ini, saya akan menjelaskan cara mengkompilasi dan menjalankan Server Minnow di ESP8266. Server Minnow dan contoh referensi tersedia di GitHub.
Saya baru-baru ini menerbitkan sebuah artikel di Server Minnow di sini di embedded.com. Artikel ini menjelaskan cara menggunakan Server Minnow untuk membuat aplikasi manajemen perangkat berbasis web modern. Artikel ini juga membahas manfaat menggunakan server WebSocket dengan apa yang disebut Aplikasi Halaman Tunggal (SPA) saat menggunakan TLS. Saya sarankan membaca artikel ini karena kami akan menyiapkan dan menyusun kode contoh yang sama untuk ESP8266.
Memulai
Kami akan menggunakan lingkungan FreeRTOS/lwIP ESP8266 yang disediakan oleh proyek esp-open-rtos, tetapi jangan khawatir, Anda tidak perlu melalui pengaturan esp-open-rtos yang rumit. Sebagai gantinya, kami akan menggunakan lingkungan yang telah dikonfigurasi sebelumnya dan sepenuhnya siap digunakan dengan IDE berbasis web yang mudah digunakan.
Unduh IDE FreeRTOS/lwIP ESP8266
Arahkan ke Real Time Logic dan unduh ESP8266 IDE yang telah kami siapkan. IDE, yang dirancang untuk tujuan pendidikan, termasuk esp-open-rtos yang telah dikonfigurasi sebelumnya yang dibundel dengan IDE kode sumber C berbasis web yang mudah digunakan. IDE membutuhkan VmWare atau VirtualBox. Saya lebih suka VmWare daripada VirtualBox, karena saya merasa lebih mudah digunakan. Perhatikan bahwa VmWare gratis untuk penggunaan non-komersial.
ESP8266 IDE juga menyertakan tumpukan TLS tertanam (SharkSSL), dan Server Minnow secara otomatis menggunakan TLS saat dikompilasi dengan SharkSSL.
Anda dapat mulai menggunakan ESP8266 IDE tanpa papan ESP8266, tetapi Anda tidak dapat mengunggah dan menjalankan kode yang dikompilasi. Dengan kata lain, Anda dapat mengunduh IDE dan mengikuti semua langkah dalam tutorial ini kecuali menjalankan kode pada ESP8266.
Tangkapan layar pada Gambar 1 di bawah ini menunjukkan mesin virtual dan IDE berbasis web yang terhubung ke mesin virtual. Perhatikan bagaimana mesin virtual mengambil alih kepemilikan koneksi USB ESP8266. IDE berbasis web mendeteksi ini dan menunjukkan ESP8266 sebagai terhubung dan siap untuk di-flash dengan firmware baru.
klik untuk gambar lebih besar
Gambar 1:IDE berbasis web terhubung ke alamat IP mesin virtual. (Sumber:Logika Waktu Nyata)
Tangkapan layar pada Gambar 1 menunjukkan ESP8266 terhubung ke LED melalui papan tempat memotong roti. Anda tidak memerlukan LED tambahan atau papan tempat memotong roti kecuali Anda ingin mengontrol LED eksternal yang digunakan oleh aplikasi contoh.
Perhatikan bahwa alamat IP VM Anda kemungkinan besar akan berbeda dari pada Gambar 1. Pastikan untuk mengklik di jendela mesin virtual untuk alamat IP. Jika jendela kosong, klik jendela lalu tekan tombol enter. Anda harus memasukkan alamat IP ini di browser Anda untuk membuka IDE web.
Menginstal Server Minnow dan Kode Contoh
Contoh referensi Server Minnow tidak disertakan dalam ESP8266 IDE dan harus diinstal secara terpisah. Gambar 1 menunjukkan contoh Server Minnow yang sudah terinstal di direktori 'ESP/ms'. Server Minnow harus diinstal dari baris perintah Linux, tetapi jangan khawatir jika Anda belum pernah menggunakan Linux. Anda cukup menyalin dan menempelkan perintah yang telah kami siapkan. Gambar berikut menunjukkan tangkapan layar dari perintah penginstalan Server Minnow yang ditempelkan ke shell web Linux yang tersedia di http://vm-ip-address/webshell/.
klik untuk gambar lebih besar
Gambar 2:Perintah instalasi Server Minnow ditempelkan ke shell web Linux. (Sumber:Logika Waktu Nyata)
Saat Anda memasukkan URL ke web shell di browser Anda, Anda akan diminta untuk masuk. Nama pengguna adalah sharkssl dan kata sandinya adalah SharkSSL.
Tutorial ESP8266 di GitHub menjelaskan cara mengkonfigurasi mesin virtual, menginstal semuanya, mengkompilasi contoh server web, dan mem-flash firmware. Video berikut menyederhanakan proses dengan menjelaskan semuanya langkah demi langkah.
Video 1:Cara mendownload dan menginstal contoh Server Minnow, kompilasi, dan upload kode. (Sumber:Logika Waktu Nyata)
Aman vs. Tidak Aman
Server Minnow dapat digunakan dalam mode aman atau tidak aman dan secara otomatis menggunakan mode aman (TLS) saat digunakan dengan ESP8266 IDE dan SharkSSL. Menggunakan server web berkemampuan TLS di perangkat menambah kerumitan tambahan, dan pengguna akhir mendapat beban administratif untuk berurusan dengan sertifikat SSL. Dalam video di atas, kami menunjukkan cara menghapus kesalahan sertifikat yang disajikan di browser dengan menginstal sertifikat Certificate Authority (CA) di browser. Sertifikat CA adalah sertifikat yang digunakan untuk menandatangani sertifikat dalam contoh server web.
Perangkat yang disematkan biasanya dipasang di jaringan pribadi yang dilindungi, tetapi banyak pelanggan masih menuntut agar koneksi server web menggunakan TLS. Penggunaan server berkemampuan TLS di jaringan pribadi bermasalah karena tidak ada otoritas sertifikat terkenal yang akan menandatangani alamat IP atau nama non-standar (jaringan pribadi). Salah satu pilihannya adalah menjadi otoritas sertifikat Anda sendiri. Jika Anda tertarik untuk mempelajari lebih lanjut tentang ini, lihat tutorial kami Cara bertindak sebagai Otoritas Sertifikat.
Seperti disebutkan di atas, ESP8266 lambat. TLS sangat intensif CPU dan Anda akan melihat bahwa dibutuhkan beberapa waktu untuk menghubungkan dan membuat koneksi. Contoh Aplikasi Halaman Tunggal, yang menggunakan WebSockets untuk komunikasi, dioptimalkan untuk perangkat yang dibatasi CPU, tetapi enkripsi asimetris awal (jabat tangan TLS) masih membutuhkan waktu, terutama dengan beberapa browser yang tidak mengikuti praktik desain yang baik dan membuka banyak koneksi TCP yang semuanya membutuhkan jabat tangan TLS penuh. Untuk mempelajari lebih lanjut tentang masalah dengan browser web modern dan mikrokontroler lambat, lihat tutorial kami Membuat Aplikasi Satu Halaman dengan Server Minnow, yang membahas masalah secara mendetail.