All Products
Search
Document Center

IoT Platform:Koneksi melalui MQTT-TLS

Last Updated:Jun 04, 2026

MQTT-TLS menggunakan protokol TLS untuk mengenkripsi komunikasi publish/subscribe antara perangkat dan IoT Platform, sehingga menjamin keamanan data.

Informasi latar belakang

Saat mengonfigurasi protokol MQTT CONNECT, perhatikan hal-hal berikut:

  • Jika beberapa perangkat fisik menggunakan sertifikat perangkat yang sama (ProductKey, DeviceName, dan DeviceSecret) atau kredensial yang sama (ProductKey, DeviceName, ClientID, dan DeviceToken), mereka akan sering terputus. Perangkat yang baru diautentikasi akan memaksa perangkat sebelumnya offline, sehingga memicu upaya koneksi ulang secara otomatis.

  • Link SDK di sisi perangkat akan secara otomatis melakukan koneksi ulang saat terputus. Anda dapat memantau perilaku perangkat di Simple Log Service.

Koneksi langsung client MQTT

Penting

Koneksi TCP tanpa enkripsi menimbulkan risiko keamanan tinggi dan dinonaktifkan secara default untuk instans Enterprise baru.

  1. Gunakan koneksi terenkripsi TLS untuk memastikan komunikasi yang aman.

    • Link SDK di sisi perangkat telah dikonfigurasi sebelumnya dengan enkripsi TLS. Tidak diperlukan pengaturan manual.

    • Jika Anda mengembangkan client perangkat sendiri, gunakan salah satu sertifikat root berikut untuk mengautentikasi server IoT Platform:

      • Direkomendasikan: Sertifikat tanda tangan sendiri Alibaba Cloud IoT Platform. Berlaku hingga 4 Juli 2053. Lakukan koneksi ke port 8883.

        Penting

        Anda dapat menggunakan hash MD5 c7a6afb466713832af778a7bcb6d1aef untuk memverifikasi integritas file sertifikat.

      • Sertifikat root Global Sign R1. Berlaku hingga 28 Januari 2028. Lakukan koneksi ke port 1883. Setelah masa berlaku habis, perangkat harus memperbarui sertifikat root CA-nya agar verifikasi TLS tetap berjalan.

  2. Lakukan koneksi ke server menggunakan client MQTT.

    1. Anda dapat menggunakan client MQTT open source untuk terhubung. Lihat juga dokumentasi resmi MQTT.

      Catatan

      Alibaba Cloud tidak menyediakan dukungan teknis untuk kode pihak ketiga.

    2. Gunakan SDK di sisi perangkat untuk terhubung ke IoT Platform. Untuk contoh dalam bahasa C, lihat Koneksi MQTT. Jika Anda mengembangkan client sendiri, konfigurasikan parameter berikut.

      Parameter

      Deskripsi

      Nama domain koneksi

      Untuk nama domain koneksi MQTT instans publik dan instans Enterprise, lihat Lihat dan konfigurasi endpoint instans.

      Header variabel: Keep Alive

      Instruksi CONNECT harus mencakup interval Keep Alive. Rentang nilai yang valid: 30 hingga 1.200 detik. Disarankan: 300 detik atau lebih (tingkatkan untuk jaringan yang tidak stabil). IoT Platform akan menolak koneksi dengan nilai di luar rentang tersebut.

      Detailnya terdapat di bagian keepalive MQTT di bawah ini.

      Parameter pesan MQTT CONNECT

      Untuk autentikasi pra-registrasi One-Device-One-Secret dan One-Product-One-Secret: Lakukan koneksi menggunakan sertifikat perangkat (ProductKey, DeviceName, dan DeviceSecret).

      mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
      mqttUsername: deviceName+"&"+productKey
      mqttPassword: sign_hmac(deviceSecret,content)
      • mqttClientId: Konten di antara | | merupakan parameter ekstensi.

      • clientId: ID client kustom. Panjang maksimum: 64 karakter. Kami menyarankan menggunakan alamat MAC perangkat atau nomor seri (SN) agar mudah diidentifikasi.

      • securemode: Mode keamanan. Nilai yang valid: 2 (koneksi langsung TLS) dan 3 (koneksi langsung TCP).

      • signmethod: Algoritma signature. Nilai yang valid: hmacmd5, hmacsha1, hmacsha256.

      • timestamp: Opsional. Waktu saat ini dalam milidetik.

      • mqttPassword: Urutkan parameter yang dikirim ke server secara alfabetis, lalu tandatangani menggunakan `signmethod` yang ditentukan. Detail perhitungan terdapat di Contoh signature koneksi MQTT.

      • content: Nilai `content` adalah string yang dihasilkan dengan menggabungkan nilai parameter (productKey, deviceName, timestamp, dan clientId) yang dikirim ke server. Sebelum penggabungan, urutkan parameter berdasarkan nama secara alfabetis.

        Penting

        productKey dan deviceName adalah parameter yang diperlukan, sedangkan timestamp dan clientId bersifat opsional. Jika Anda mengirimkan timestamp atau clientId, nilainya harus sama dengan pengaturan pada mqttClientId.

      Contoh:

      Asumsikan bahwa clientId = 12345, deviceName = device, productKey = pk, timestamp = 789, signmethod=hmacsha1, dan deviceSecret=secret. Parameter berikut dikirim ke MQTT melalui TCP:

      mqttclientId=12345|securemode=3,signmethod=hmacsha1,timestamp=789|
      mqttUsername=device&pk
      mqttPassword=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString(); 

      Password terenkripsi berupa string biner ke heksadesimal. Berikut contoh hasilnya:

      FAFD82A3D602B37FB0FA8B7892F24A477F85****

      Untuk menghitung parameter signature MQTT, ikuti panduan di Cara menghitung parameter signature MQTT.

      Untuk autentikasi One-Product-One-Secret tanpa pra-registrasi: Lakukan koneksi menggunakan ProductKey, DeviceName, ClientID, dan DeviceToken.

      mqttClientId: clientId+"|securemode=-2,authType=connwl|"
      mqttUsername: deviceName+"&"+productKey
      mqttPassword: deviceToken
      • mqttClientId: Konten di antara | | merupakan parameter ekstensi.

      • clientId, deviceToken: ClientID dan DeviceToken yang diperoleh dari Registrasi perangkat dinamis melalui MQTT.

      • securemode: Mode aman. Untuk autentikasi One-Product-One-Secret tanpa pra-registrasi, parameter ini tetap bernilai -2.

      • authType: Metode autentikasi. Untuk autentikasi One-Product-One-Secret tanpa pra-registrasi, parameter ini tetap bernilai connwl.

Contoh

Topik berikut menyediakan contoh koneksi menggunakan client MQTT open source:

Keepalive MQTT

Perangkat harus mengirim setidaknya satu pesan (misalnya, permintaan PING) dalam setiap interval keepalive.

Rentang nilai yang valid: 30 hingga 1.200 detik. Disarankan: 300 detik atau lebih.

Pengatur waktu heartbeat dimulai saat IoT Platform mengirim pesan CONNACK sebagai respons terhadap pesan CONNECT. Pengatur waktu direset ketika pesan PUBLISH, SUBSCRIBE, PING, atau PUBACK diterima. IoT Platform memeriksa heartbeat keepalive perangkat setiap 30 detik. Waktu tunggu untuk deteksi terjadwal adalah periode waktu sejak perangkat online hingga deteksi terjadwal terbaru. Periode timeout maksimum dihitung menggunakan rumus berikut: (interval keepalive × 1,5) + (waktu tunggu untuk deteksi terjadwal). Jika tidak ada pesan yang diterima dari perangkat setelah periode timeout maksimum, server akan secara otomatis memutus koneksi perangkat.