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

Autentikasi Perangkat Aman dengan Sertifikat X.509 di Eclipse Hono

Dalam beberapa bulan terakhir, liputan media telah menyoroti perangkat IoT yang tidak aman yang gagal memenuhi standar keamanan dasar. Kekhawatiran yang berulang adalah kerahasiaan data yang ditransmisikan dari perangkat ke layanan cloud. Menakjubkan, banyak perangkat mengirim data melalui jaringan publik tanpa enkripsi, meskipun protokol berbasis TCP/IP seperti HTTP dan MQTT mendukung enkripsi TLS.

Eclipse Hono telah mengaktifkan TLS untuk adapter HTTP dan MQTT-nya sejak awal. Milestone 0.9-M2 kini menambahkan dukungan untuk autentikasi sertifikat klien X.509 selama handshake TLS, memungkinkan perangkat untuk menggunakan pasangan kunci alih-alih nama pengguna/kata sandi.

Calling all developers

Hackathon IoT terbesar di Eropa kembali ke Berlin pada 14-15 Mei 2023. Bergabunglah dengan 700+ pengembang dalam tantangan spesifik domain, belajar, berjaringan, dan bersenang-senang.

Dalam panduan ini kami membahas contoh lengkap: membuat dan mendaftarkan trust anchor spesifik tenant, menghasilkan sertifikat perangkat, mendaftarkan subject DN-nya, dan menggunakan sertifikat untuk mengautentikasi perangkat terhadap adapter MQTT Hono. Pengetahuan kerja tentang kriptografi RSA dan konsep X.509 (RFC 5280) diasumsikan.

Mengapa sertifikat klien?

Menggunakan kata sandi memerlukan menyimpan rahasia per perangkat di layanan Credentials Hono, yang kemudian dibandingkan dengan kata sandi yang disediakan perangkat. Sertifikat klien menghilangkan kebutuhan akan rahasia per perangkat. Dengan mendaftarkan satu trust anchor untuk tenant, semua sertifikat perangkat dapat divalidasi dalam handshake TLS menggunakan kunci publik tenant.

Buat otoritas sertifikat tenant

Hasilkan pasangan kunci RSA dan sertifikat self-signed tenant. Ini akan menandatangani semua sertifikat perangkat.

$ 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"

Gunakan hanya atribut X.500 standar (CN, L, ST, O, OU, C, STREET, DC, UID) untuk menjaga DN tetap sederhana.

Daftarkan tenant

Daftarkan trust anchor dengan Hono. Contoh berikut menggunakan Hono Sandbox (v0.9-M2 atau lebih baru). Ganti ACME dengan ID tenant unik untuk instance Anda.

$ 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

Hasilkan pasangan kunci perangkat dan sertifikat yang ditandatangani oleh CA tenant.

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

Daftarkan perangkat

Daftarkan ID perangkat dengan tenant.

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

Daftarkan subject DN perangkat

Asosiasikan subject DN sertifikat perangkat dengan ID perangkat.

$ SUBJECT=$(openssl x509 -in device-cert.pem -noout -subject -nameopt RFC2253 | sed s/^subject=//)
$ cat < credentials.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

Mulai consumer untuk tenant dan publikasikan telemetri menggunakan sertifikat perangkat.

# Start consumer
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
# Publish telemetry via MQTT
mosquitto_pub -h hono.eclipse.org -p 8883 \
--capath /etc/ssl/certs/ \
--cert device-cert.pem \
--key device-key.pem \
-q 1 -t telemetry -m "Hello there"

Jika berhasil, konsol consumer akan menampilkan pesan. Anda juga dapat mempublikasikan melalui HTTP:

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/telemetry

Teknologi Internet of Things

  1. Teori Perangkat Solid-State: Dari Fisika hingga Aplikasi Praktis
  2. Eclipse Hono Meluncurkan Registry Perangkat Berbasis MongoDB – Skalabel, Siap Produksi
  3. Eclipse Hono 1.0.0 Meluncur: Platform Konektivitas IoT Terpadu Open-Source
  4. Solusi Power-On Andalkan untuk Perangkat Medis Baterai
  5. Melacak Kemajuan Teknologi Perangkat Medis
  6. Sistem Kontrol Suhu Berbasis LM35 dengan Mikrokontroler AT89S52
  7. Arm Meningkatkan Konektivitas IoT dan Manajemen Perangkat melalui Akuisisi Stream Technologies
  8. Kerentanan Perangkat IoT Mengekspos Rumah Cerdas Serangan: Ancaman Kompromi Kredensial
  9. Perangkat IoT Tidak Terkonfigurasi: Ancaman Tersembunyi bagi Rumah Cerdas Anda
  10. Hacking Hardware Terintegrasi untuk Perangkat IoT: Alat, Teknik, dan Implikasi Bisnis