Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Teknologi Internet of Things

Otentikasi perangkat berbasis X.509 di Eclipse Hono

Selama beberapa bulan terakhir, media dipenuhi dengan laporan tentang tidak aman Perangkat IoT yang tidak memenuhi persyaratan keamanan paling dasar sekalipun. Salah satu kekhawatiran yang diangkat adalah kerahasiaan data yang ditransfer dari perangkat ke layanan cloud yang disediakan oleh produsen. Dalam banyak kasus, data dikirim melalui jaringan publik yang sepenuhnya tidak terenkripsi, yang cukup mengejutkan, mengingat bahwa semua protokol transportasi berbasis TCP/IP populer yang digunakan dalam perangkat IoT saat ini (misalnya, HTTP dan MQTT) mendukung negosiasi dan penggunaan saluran transportasi aman (terenkripsi) melalui Transport Layer Security (TLS).

Eclipse Hono telah mendukung penggunaan TLS dalam adaptor protokol HTTP dan MQTT-nya sejak awal. Pencapaian 0.9-M2 yang baru-baru ini dirilis telah menambahkan dukungan untuk otentikasi perangkat yang menggunakan sertifikat klien X.509 sebagai bagian dari handshake TLS untuk HTTP dan adaptor MQTT. Hal ini memungkinkan perangkat untuk menggunakan pasangan kunci privat/publik alih-alih nama pengguna dan sandi untuk mengautentikasi dirinya sendiri ke adaptor protokol.

Memanggil semua pengembang

Hackathon IoT terbesar di Eropa kembali ke Berlin pada 14-15 Mei 2019. Bergabunglah dengan lebih dari 700 pengembang dalam berbagai tantangan peretasan khusus domain untuk meretas, bermain, belajar, bersenang-senang, dan mencari teman baru dari seluruh dunia!

Bergabunglah dengan hackathon IoT

Dalam posting blog ini saya akan memandu Anda melalui contoh lengkap tentang cara membuat dan mendaftarkan trust anchor khusus penyewa , buat sertifikat untuk perangkat, daftarkan nama khusus subjek dan, terakhir, gunakan sertifikat untuk mengautentikasi perangkat ke adaptor protokol MQTT Hono. Di sisa posting ini, saya akan berasumsi bahwa Anda memiliki pemahaman umum tentang kriptografi berbasis RSA dan, khususnya, peran yang dimainkan oleh kunci privat dan publik. Sebagai referensi, RFC 5280 menentukan semua detail teknis X.509.

Mengapa sertifikat klien?

Saat menggunakan kata sandi untuk mengautentikasi perangkat, kata sandi setiap perangkat harus didaftarkan ke layanan Kredensial Hono sehingga adaptor protokol dapat membandingkan kata sandi yang diberikan oleh perangkat selama autentikasi dengan hash kata sandi yang tercatat.

Salah satu keuntungan menggunakan sertifikat klien untuk mengautentikasi perangkat adalah tidak perlu lagi mendaftarkan rahasia individu (kata sandi) untuk perangkat dengan Hono. Sebagai gantinya, cukup mendaftarkan satu jangkar kepercayaan untuk penyewa yang kemudian dapat digunakan untuk memverifikasi identitas semua perangkat milik penyewa sebagai bagian dari handshake TLS. Agar ini berfungsi, sertifikat klien yang digunakan oleh perangkat harus berisi tanda tangan digital yang dapat divalidasi menggunakan kunci publik yang berfungsi sebagai jangkar kepercayaan penyewa.

Buat otoritas sertifikat penyewa

Oleh karena itu, langkah pertama adalah membuat pasangan kunci publik/pribadi penyewa yang akan digunakan untuk menandatangani sertifikat klien yang digunakan oleh perangkat penyewa.

$ openssl genrsa -out tenant-key.pem 4096 $ openssl req -x509 -key tenant-key.pem -out tenant-cert.pem -days 365 -subj "/O=ACME Inc./CN=Sensors"

Nama khusus subjek yang ditetapkan menggunakan parameter `-subj` dapat berisi nama khusus X.500 yang valid. Namun, untuk menyederhanakannya, Anda sebaiknya tidak menggunakan tipe atribut apa pun selain `CN`, `L`, `ST`, `O`, `OU`, `C`, `STREET`, `DC`, `UID`.

Daftarkan penyewa

Sekarang setelah kunci dibuat, kita dapat mendaftarkan penyewa menggunakan kunci publik sebagai jangkar kepercayaan.

Untuk kenyamanan kita akan menggunakan Hono Sandbox. Namun, penginstalan (lokal) lainnya yang menjalankan versi 0.9-M2 atau yang lebih baru akan berfungsi dengan baik.

Pada perintah di bawah, harap ganti pengenal penyewa `ACME` dengan pengenal pilihan Anda sendiri. Ini penting karena Hono memberlakukan keunikan pengidentifikasi penyewa. Oleh karena itu, setiap pengenal hanya dapat didaftarkan satu kali per instans Hono.

Tiga perintah pertama menentukan beberapa variabel untuk digunakan nanti:pengidentifikasi penyewa, nama khusus subjek sertifikat, dan kunci publik yang disandikan Base64. Variabel tersebut kemudian digunakan dalam perintah untuk mendaftarkan jangkar kepercayaan dengan penyewa baru.

$ TENANT="ACME" $ SUBJECT=$(openssl x509 -in tenant-cert.pem -noout -subject -nameopt RFC2253 | sed s/^subject=//) $ PK=$(openssl x509 -in tenant-cert.pem -noout -pubkey | sed /^---/d | sed -z 's/\n//g') $ cat < tenant.json {"tenant-id":"$TENANT", "trusted-ca":{"subject-dn":"$SUBJECT", "public-key":"$PK"}} EOS $ curl -i -H 'Content-Type:application/json' -H 'Expect:' --data-binary @tenant.json https://hono.Eclipse.org:28443/tenant

Buat sertifikat perangkat

Langkah selanjutnya adalah membuat pasangan kunci untuk perangkat dan sertifikat klien yang sesuai, yang ditandatangani oleh kunci pribadi penyewa.

$ openssl genrsa -out device-key.pem 4096 $ openssl req -new -key device-key.pem -subj "/O=ACME Inc./CN=Perangkat Fuzz Panas" | openssl x509 -req -days 365 -out device-cert.pem -CA tenant-cert.pem -CAkey tenant-key.pem -CAcreateserial

Sekali lagi, pastikan untuk tidak menggunakan jenis atribut apa pun selain `CN`, `L`, `ST`, `O`, `OU`, `C`, `STREET`, `DC`, `UID` di subjek nama terhormat.

Daftarkan perangkat

Sekarang kita dapat menggunakan pengenal perangkat arbitrer untuk mendaftarkan perangkat ke penyewa.

$ curl -i -H 'Content-Type:application/json' --data-binary '{"device-id":"hot-fuzz"}' https://hono.Eclipse.org:28443/registration/$ PENYEWA

Daftarkan DN subjek perangkat

Langkah terakhir adalah mendaftarkan nama khusus subjek perangkat. Sekali lagi, pastikan untuk menggunakan penyewa dan pengenal perangkat yang sama seperti di atas.

$ SUBJECT=$(openssl x509 -in device-cert.pem -noout -subject -nameopt RFC2253 | sed s/^subject=//) $ cat < kredensial.json {"device-id":"hot-fuzz", "type":"x509-cert", "auth-id":"$SUBJECT", "secrets":[{}]} EOS $ curl -i -H 'Content-Type:application/json' --data-binary @credentials.json https://hono.Eclipse.org:28443/credentials/$TENANT

Uji koneksi

Sekarang perangkat telah terdaftar, sekarang saatnya untuk menghubungkan ke adaptor MQTT menggunakan sertifikat klien yang baru dibuat dan memublikasikan beberapa data.

Pertama, kami memulai konsumen untuk penyewa tempat kami mendaftarkan perangkat. Anda dapat mengunduh klien dari situs web Hono:

$ java -jar hono-cli-*-exec.jar --hono.client.host=hono.Eclipse.org --hono.client.port=15671 --hono.client.tlsEnabled=true --hono.client. username=consumer@HONO --hono.client.password=verysecret --spring.profiles.active=receiver --tenant.id=$TENANT

Pada langkah terakhir, kami menggunakan klien baris perintah Eclipse Mosquitto untuk memublikasikan beberapa data telemetri:

$ mosquitto_pub -h hono.Eclipse.org -p 8883 --capath /etc/ssl/certs/ --cert device-cert.pem --key device-key.pem -q 1 -t telemetri -m "Halo"

Jika semuanya berjalan dengan baik, Anda seharusnya dapat melihat data yang dicatat ke konsol di terminal tempat Anda memulai konsumen.

Perangkat juga dapat menggunakan HTTP untuk memublikasikan data:

$ curl -i --cert device-cert.pem --key device-key.pem -H 'Content-Type:plain/text' -H 'Expect:' --data-binary 'Hello there' https:// hono.eclipse.org:8443/telemetri

Teknologi Internet of Things

  1. Pengantar Teori Perangkat Solid-state
  2. Rilis registri perangkat berbasis MongoDB baru di Eclipse Hono
  3. Eclipse Hono 1.0.0 dirilis:Platform konektivitas IoT terbuka
  4. Menghidupkan perangkat medis yang dioperasikan dengan baterai dengan andal
  5. Memantau kemajuan perangkat medis
  6. Perangkat berbasis suhu Sistem kontrol menggunakan LM35
  7. Arm memperluas konektivitas IoT dan kemampuan manajemen perangkat dengan akuisisi Stream Technologies
  8. Kerentanan aplikasi membuat perangkat IoT terbuka untuk diserang
  9. Pas dan lupakan:Ancaman yang ditimbulkan oleh IoT yang tidak dikonfigurasi
  10. Pengantar peretasan perangkat keras tertanam perangkat IoT