Jika Anda mengaktifkan pendaftaran dinamis di konsol IoT Platform, Anda dapat memverifikasi perangkat yang terhubung langsung menggunakan metode sertifikat-unik-per-produk. Dengan cara ini, perangkat dapat terhubung ke IoT Platform melalui Message Queuing Telemetry Transport (MQTT). Perangkat membentuk koneksi Transport Layer Security (TLS) ke IoT Platform untuk mendapatkan DeviceSecret yang diperlukan untuk koneksi MQTT. Kemudian, perangkat menutup koneksi TLS dan membentuk koneksi MQTT untuk komunikasi. Topik ini menjelaskan proses pendaftaran dinamis.
Prasyarat
Langkah-langkah berikut yang dijelaskan dalam topik Verifikasi Sertifikat-Unik-Per-Produk telah dilakukan:
Metode verifikasi sertifikat-unik-per-produk tanpa prapendaftaran hanya tersedia di wilayah China (Shanghai).
Buat produk.
Aktifkan pendaftaran dinamis.
Tambahkan perangkat.
Instal sertifikat perangkat pada perangkat.
Proses pendaftaran dinamis

Perangkat mengirim pesan CONNECT yang mencakup parameter pendaftaran dinamis untuk membentuk koneksi.
CatatanPendaftaran dinamis hanya mendukung koneksi TLS. Selama pendaftaran dinamis, IoT Platform tidak memverifikasi waktu keep-alive dari koneksi MQTT. Oleh karena itu, Anda tidak perlu menentukan waktu keep-alive.
Titik akhir MQTT untuk instance publik dan instance Enterprise Edition: Untuk informasi lebih lanjut, lihat Kelola Titik Akhir Suatu Instance.
CatatanJika Anda ingin memverifikasi perangkat yang terhubung langsung menggunakan metode sertifikat-unik-per-produk tanpa prapendaftaran, ganti ${YourRegionId} dengan
cn-shanghai.Parameter pendaftaran dinamis dari pesan CONNECT:
Jika perangkat terhubung ke instance publik versi baru atau instance Enterprise Edition, konfigurasikan parameter pendaftaran dinamis berikut:
mqttClientId:clientId+"|securemode=-2,authType=xxxx,random=xxxx,signmethod=xxxx,instanceId=xxxx|" mqttUserName: deviceName+"&"+productKey mqttPassword:sign_hmac(productSecret,content)Jika perangkat terhubung ke instance publik versi lama, konfigurasikan parameter pendaftaran dinamis berikut:
mqttClientId:clientId+"|securemode=2,authType=xxxx,random=xxxx,signmethod=xxxx|" mqttUserName: deviceName+"&"+productKey mqttPassword:sign_hmac(productSecret,content)
CatatanUntuk informasi lebih lanjut, lihat Ikhtisar Instance IoT Platform.
Parameter:
mqttClientId
Tabel berikut menjelaskan parameter yang termasuk dalam parameter mqttClientId.
Parameter
Deskripsi
clientId
ID klien. ID klien harus memiliki panjang 1 hingga 64 karakter. Kami merekomendasikan agar Anda menggunakan alamat Media Access Control (MAC) atau nomor seri (SN) perangkat sebagai ID klien.
securemode
Mode keamanan. Nilai valid:
2: metode verifikasi sertifikat-unik-per-produk dengan prapendaftaran.
-2: metode verifikasi sertifikat-unik-per-produk tanpa prapendaftaran.
authType
Metode verifikasi. Parameter yang dikembalikan bervariasi berdasarkan metode verifikasi. Nilai valid:
register: metode verifikasi sertifikat-unik-per-produk dengan prapendaftaran. Jika Anda menetapkan parameter ini ke nilai tersebut, DeviceSecret akan dikembalikan.
regnwl: metode verifikasi sertifikat-unik-per-produk tanpa prapendaftaran. Jika Anda menetapkan parameter ini ke nilai tersebut, DeviceToken dan ClientID akan dikembalikan.
random
Nomor acak. Anda dapat menentukan nomor acak.
signMethod
Algoritma tanda tangan. Nilai valid: hmacmd5, hmacsha1, dan hmacsha256.
instanceId
ID instance IoT. Anda dapat masuk ke konsol IoT Platform dan melihat ID instance di tab Overview.
mqttUserName
Format:
deviceName+"&"+productKeyContoh:
device1&al123456789mqttPassword
Metode perhitungan:
sign_hmac(productSecret,content)Nilai parameter content adalah string gabungan dari parameter dan nilai yang sesuai yang harus dikirimkan ke IoT Platform. Parameter tersebut mencakup deviceName, productKey, dan random. Parameter-parameter tersebut diurutkan secara alfabetis dan digabungkan tanpa menggunakan operator penggabungan. Kemudian, nilai parameter content dienkripsi berdasarkan algoritma yang ditentukan oleh signMethod dalam parameter mqttClientId. ProductSecret dari produk digunakan sebagai kunci rahasia algoritma.
Contoh:
hmac_sha1(h1nQFYPZS0mW****, deviceNamedevice1productKeyal123456789random123)
IoT Platform mengembalikan pesan CONNECT ACK.
Nilai 0 menunjukkan bahwa pendaftaran dinamis berhasil.
Nilai lainnya menunjukkan bahwa pendaftaran dinamis gagal. Anda dapat mengidentifikasi penyebab kegagalan berdasarkan kode kesalahan yang dikembalikan dalam pesan ACK.
Tabel berikut menjelaskan kode respons yang mungkin dikembalikan setelah perangkat mengirim permintaan koneksi ke IoT Platform.
Kode respons
Pesan
Deskripsi
0
CONNECTION_ACCEPTED
Pendaftaran dinamis berhasil.
2
IDENTIFIER_REJECTED
Parameter tidak valid. Kesalahan ini dapat terjadi karena salah satu dari penyebab berikut:
Satu atau lebih parameter yang diperlukan tidak ditentukan atau dalam format yang tidak valid.
Anda membentuk koneksi TCP langsung untuk registrasi. Pendaftaran dinamis hanya mendukung koneksi TLS.
3
SERVER_UNAVAILABLE
Kesalahan terjadi di IoT Platform. Coba lagi nanti.
4
BAD_USERNAME_OR_PASSWORD
Pendaftaran dinamis gagal. Perangkat tidak diverifikasi.
Periksa apakah nilai parameter input mqttUserName dan mqttPassword valid.
Setelah koneksi dibentuk, IoT Platform menggunakan topik yang digunakan untuk mendorong sertifikat perangkat untuk mengembalikan parameter verifikasi. Parameter verifikasi bervariasi berdasarkan parameter authType dalam pesan CONNECT.
CatatanPerangkat tidak perlu berlangganan topik yang digunakan untuk mendorong sertifikat.
Jika Anda menggunakan metode sertifikat-unik-per-produk dengan prapendaftaran, tetapkan parameter authType ke register. Dalam hal ini, topik
/ext/registerdigunakan untuk mengembalikan DeviceSecret.Payload pesan yang didorong oleh IoT Platform berada dalam format berikut:
{ "productKey" : "***", "deviceName" : "***", "deviceSecret" : "***" }Jika Anda menggunakan metode sertifikat-unik-per-produk tanpa prapendaftaran, tetapkan parameter authType ke regnwl. Dalam hal ini, topik
/ext/regnwldigunakan untuk mengembalikan ClientID dan DeviceToken.Payload pesan yang didorong oleh IoT Platform berada dalam format berikut:
{ "productKey" : "***", "deviceName" : "***", "clientId" : "***", "deviceToken" : "***" }
Perangkat menerima dan menyimpan DeviceSecret atau kombinasi ClientID dan DeviceToken, dan menutup koneksi MQTT saat ini.
Perangkat dapat menutup koneksi saat ini dengan mengirim pesan DISCONNECT atau dengan menutup koneksi TCP.
Jika perangkat tidak menutup koneksi, IoT Platform akan memutus perangkat setelah 15 detik.
Jika Anda menggunakan klien MQTT Eclipse Paho, gunakan fungsi
MqttConnectOptions.setAutomaticReconnect(false)untuk menonaktifkan rekoneksi otomatis. Jika tidak, permintaan baru untuk pendaftaran dinamis akan dihasilkan berdasarkan logika rekoneksi setelah pendaftaran selesai dan koneksi TCP ditutup.Jika Anda menggunakan metode dengan prapendaftaran sertifikat-unik-per-produk, perangkat menggunakan DeviceSecret untuk memulai ulang permintaan untuk membentuk koneksi MQTT antara perangkat dan IoT Platform untuk komunikasi pesan. Jika Anda menggunakan metode tanpa prapendaftaran sertifikat-unik-per-produk, perangkat mengubah ClientID menjadi mqttClientId, lalu menggunakan kombinasi mqttClientId dan DeviceToken untuk membentuk koneksi MQTT. Untuk informasi lebih lanjut, lihat Bentuk Koneksi MQTT melalui TCP.
Contoh
Untuk informasi tentang contoh cara mendaftarkan perangkat yang terhubung langsung secara dinamis, lihat Pendaftaran Dinamis Berbasis MQTT.