Ketika Anda menghubungkan perangkat ke IoT Platform menggunakan gateway Message Queuing Telemetry Transport (MQTT), Anda dapat mengaktifkan verifikasi dua arah antara perangkat dan IoT Platform untuk memverifikasi identitas perangkat. Tema ini menjelaskan cara menghubungkan perangkat ke IoT Platform menggunakan verifikasi dua arah berbasis sertifikat X.509. Dalam contoh ini, sebuah gateway MQTT dengan parameter Authentication Type diatur ke One-party Verification dan parameter Enable X.509 certificate-based Device Verification diatur ke Yes dibuat dan kode Java sampel disediakan.
Prasyarat
Sebuah instance Exclusive Enterprise Edition telah dibeli. Dalam contoh ini, instance tersebut dibeli di wilayah China (Shanghai). Untuk informasi lebih lanjut, lihat Beli Instance Enterprise Edition.
Sertifikat yang diperlukan untuk verifikasi dua arah telah dipersiapkan.
Dalam contoh ini, file sertifikat berikut digunakan:
root-ca.crt(file sertifikat root),server.key(file kunci privat server),server.crt(file sertifikat server),client.key(file kunci privat perangkat), danclient.crt(file sertifikat perangkat).
Informasi latar belakang
IoT Platform menyediakan gateway MQTT dan memungkinkan penggunaan sertifikat X.509 dan sertifikat kustom untuk memverifikasi dan menghubungkan perangkat ke IoT Platform guna mendukung komunikasi. Fitur ini membantu IoT Platform memenuhi persyaratan berbagai skenario bisnis IoT.
Untuk informasi lebih lanjut tentang verifikasi dan komunikasi antara gateway MQTT dan perangkat, lihat Gateway MQTT.
Persiapan
Dalam contoh ini, Java digunakan untuk mengembangkan program. Lingkungan pengembangan Java yang memenuhi persyaratan berikut telah dipersiapkan:
Sistem operasi: Windows 10 (64-bit)
Java Development Kit (JDK): JDK 8
Integrated development environment (IDE): IntelliJ IDEA Community Edition
Buat gateway dan tambahkan perangkat
Buat gateway MQTT: Di kotak dialog Tambah Gateway, atur parameter Server Certificate ke isi dari file
server.crt, parameter Private Key of Server Certificate ke isi dari fileserver.key, dan parameter Device Root Certificate ke isi dari fileroot-ca.crt. Kemudian, konfigurasikan parameter lainnya seperti ditunjukkan pada gambar berikut.
Di halaman Gateway, salin URL di kolom Gateway URL dari gateway.

Tambahkan perangkat ke produk gateway MQTT. Dalam contoh ini, sebuah perangkat dengan parameter MQTT Username diatur ke
device01dan parameter MQTT Password diatur kehello456ditambahkan.
Kembangkan program perangkat
Unduh paket kode aiot-java-dual-auth-demo dan ekstrak paket tersebut.
Buka IntelliJ IDEA dan impor proyek sampel
aiot-java-demodari paket kode.Tambahkan dependensi Maven ke file
pom.xml. Dalam contoh ini, dependensi berikut digunakan:<dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.mqttv5.client</artifactId> <version>1.2.5</version> </dependency> <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> <version>1.47</version> </dependency>Direktori
/src/main/java/com/aliyun/iotdari proyek berisi file program berikut yang diperlukan untuk melakukan verifikasi dua arah:SslUtil.java: membaca sertifikat perangkat.Mqtt5TlsApp.java: menghubungkan perangkat ke IoT Platform.
Di file
pom.xmldari proyek, klik Load Maven Changes untuk mengunduh paket dependensi.Di direktori
/src/maindari proyek, buat folder bernamaresources.Di direktori
/src/main/resourcesdari proyek, impor file sertifikat berikut:root-ca.crt(sertifikat root),client.key(kunci privat perangkat), danclient.crt(sertifikat perangkat).
Di file
/src/main/java/com/aliyun/iot/SslUtil.javadari proyek, modifikasi kunci yang digunakan untuk menghasilkan sertifikat.PentingNilai
123456yang ditentukan untuk fungsiclientKs.setKeyEntry()menunjukkan kunci yang digunakan untuk menghasilkan sertifikat. Ubah nilai tersebut sesuai dengan skenario bisnis Anda....... // Ganti 123456 dengan nilai kunci aktual. clientKs.setKeyEntry("private-key", key.getPrivate(), "123456".toCharArray(), new java.security.cert.Certificate[]{clientCertificate}); ......Buka file
/src/main/java/com/aliyun/iot/Mqtt5TlsApp.javadari proyek dan modifikasi parameter koneksi perangkat....... // Parameter koneksi MQTT String userName = "device01"; String password = "hello456"; String clientId = "test01_client1"; // Jalur tempat direktori root disimpan. String caCertPath = "src/main/resources/root-ca.crt"; // Jalur tempat sertifikat perangkat disimpan. String clientCertPath= "src/main/resources/client.crt"; // Jalur tempat kunci privat perangkat disimpan. String clientKeyPath="src/main/resources/client.key"; // URL gateway MQTT. String broker = "ssl://iot-*******.igw.iothub.aliyuncs.com:1883"; ......Parameter
Contoh
Deskripsi
userName
device01Nilai parameter MQTT Username dari perangkat yang ditambahkan.
password
hello456Nilai parameter MQTT Password dari perangkat yang ditambahkan.
clientId
test01_client1(Opsional) ID klien. ID klien harus memiliki panjang 1 hingga 64 karakter. Kami merekomendasikan Anda menggunakan alamat MAC atau nomor seri (SN) perangkat sebagai ID klien.
caCertPath
src/main/resources/root-ca.crtJalur proyek tempat file sertifikat root perangkat
root-ca.crtdisimpan.clientCertPath
src/main/resources/client.crtJalur proyek tempat file sertifikat perangkat
client.crtdisimpan.clientKeyPath
src/main/resources/client.keyJalur proyek tempat file kunci privat perangkat
client.keydisimpan.broker
ssl://iot-*******.igw.iothub.aliyuncs.com:1883Titik akhir gateway MQTT ke mana Anda ingin menghubungkan perangkat. Format:
ssl://${Gateway endpoint}:${Port number}.Ganti
${Gateway endpoint}dan${Port number}dengan titik akhir nomor port kustom dari gateway URL yang Anda simpan.Jalankan file program
Mqtt5TlsApp.javauntuk melakukan verifikasi dua arah antara perangkat dan IoT Platform.CatatanDalam contoh ini,
Thread.sleep(20000);ditambahkan ke fileMqtt5TlsApp.java. Kode Thread.sleep(20000); menghentikan program Mqtt5TlsApp.java dan memutuskan koneksi perangkat dari IoT Platform 20 detik setelah program berjalan. Dalam skenario nyata, Anda dapat menulis kode kustom untuk menghubungkan atau memutuskan koneksi perangkat.Gambar berikut menunjukkan hasilnya. Setelah perangkat lolos verifikasi, perangkat terhubung ke IoT Platform.
