Saat menghubungkan perangkat ke IoT Platform melalui gateway Message Queuing Telemetry Transport (MQTT), Anda dapat mengaktifkan verifikasi dua arah antara perangkat dan IoT Platform untuk memverifikasi identitas perangkat tersebut. Topik ini menjelaskan cara menghubungkan perangkat ke IoT Platform menggunakan verifikasi dua arah berbasis sertifikat X.509. Dalam contoh ini, gateway MQTT dibuat dengan parameter Authentication Type diatur ke One-party Verification dan parameter Enable X.509 certificate-based Device Verification diatur ke Yes, serta disediakan kode contoh Java.
Prasyarat
Instans Exclusive Enterprise Edition telah dibeli. Dalam contoh ini, instans Exclusive Enterprise Edition dibeli di wilayah China (Shanghai). Untuk informasi selengkapnya, lihat Purchase an Enterprise Edition instance.
Sertifikat yang diperlukan untuk verifikasi dua arah telah disiapkan.
Dalam contoh ini, digunakan file sertifikat berikut: file sertifikat root
root-ca.crt, file kunci privat sisi serverserver.key, file sertifikat sisi serverserver.crt, file kunci privat sisi perangkatclient.key, dan file sertifikat perangkatclient.crt.
Informasi latar belakang
IoT Platform menyediakan gateway MQTT dan memungkinkan penggunaan sertifikat X.509 serta sertifikat kustom untuk memverifikasi dan menghubungkan perangkat ke IoT Platform guna berkomunikasi. Fitur ini membantu IoT Platform memenuhi kebutuhan berbagai skenario bisnis IoT.
Untuk informasi selengkapnya mengenai verifikasi dan komunikasi antara gateway MQTT dan perangkat, lihat MQTT gateways.
Persiapan
Dalam contoh ini, Java digunakan untuk mengembangkan program. Lingkungan pengembangan Java yang memenuhi persyaratan berikut telah disiapkan:
Sistem operasi: Windows 10 (64-bit)
Java Development Kit (JDK): JDK 8
Lingkungan pengembangan terintegrasi (IDE): IntelliJ IDEA Community Edition
Buat gateway dan tambahkan perangkat
Buat gateway MQTT: Pada kotak dialog Add Gateway, atur parameter Server Certificate ke konten file
server.crt, parameter Private Key of Server Certificate ke konten fileserver.key, dan parameter Device Root Certificate ke konten fileroot-ca.crt. Kemudian, konfigurasikan parameter lainnya sebagai berikut:Atur Protocol ke MQTT
Atur Custom Port ke
1883Atur Authentication Type ke One-party Verification
Atur Enable Data Parsing ke No
Atur Enable Device X.509 Certificate Authentication ke Yes
Atur Enable OCSP ke Not Enabled
Pada halaman Gateway, salin URL dari kolom Gateway URL. Contoh format Gateway URL adalah
iot-{gateway identifier}.igw.iothub.aliyuncs.com, dengan nomor port1883.Tambahkan perangkat ke produk gateway MQTT. Dalam contoh ini, 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 contoh
aiot-java-demodari paket kode tersebut.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/iotproyek berisi file program berikut yang diperlukan untuk verifikasi dua arah:SslUtil.java: membaca sertifikat perangkat.Mqtt5TlsApp.java: menghubungkan perangkat ke IoT Platform.
Pada file
pom.xmlproyek, klik Load Maven Changes untuk mengunduh paket dependensi.Pada direktori
/src/mainproyek, buat folder bernamaresources.Pada direktori
/src/main/resourcesproyek, impor file sertifikat berikut:root-ca.crtyang berisi sertifikat root,client.keyyang berisi kunci privat sisi perangkat, danclient.crtyang berisi sertifikat perangkat.Pada file
/src/main/java/com/aliyun/iot/SslUtil.javaproyek, ubah 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.javaproyek dan ubah parameter koneksi perangkat....... // Parameter koneksi MQTT String userName = "device01"; String password = "hello456"; String clientId = "test01_client1"; // Path tempat direktori root disimpan. String caCertPath = "src/main/resources/root-ca.crt"; // Path tempat sertifikat perangkat disimpan. String clientCertPath= "src/main/resources/client.crt"; // Path tempat kunci privat sisi 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 client. ID client harus terdiri dari 1 hingga 64 karakter. Kami menyarankan Anda menggunakan alamat MAC atau nomor seri (SN) perangkat sebagai ID client.
caCertPath
src/main/resources/root-ca.crtPath proyek tempat file sertifikat root perangkat
root-ca.crtdisimpan.clientCertPath
src/main/resources/client.crtPath proyek tempat file sertifikat perangkat
client.crtdisimpan.clientKeyPath
src/main/resources/client.keyPath proyek tempat file kunci privat sisi perangkat
client.keydisimpan.broker
ssl://iot-*******.igw.iothub.aliyuncs.com:1883Titik akhir gateway MQTT tempat Anda ingin menghubungkan perangkat. Format:
ssl://${Gateway endpoint}:${Port number}.Ganti
${Gateway endpoint}dan${Port number}dengan titik akhir dan nomor port kustom dari gateway URL yang telah Anda simpan.Jalankan file program
Mqtt5TlsApp.javauntuk melakukan verifikasi dua arah antara perangkat dan IoT Platform.CatatanDalam contoh ini, kode Thread.sleep(20000); ditambahkan ke file
Mqtt5TlsApp.java. Kode tersebut menghentikan tugas programMqtt5TlsApp.javadan memutus koneksi perangkat dari IoT Platform 20 detik setelah program dijalankan. Dalam skenario aktual, Anda dapat menulis kode kustom untuk menghubungkan atau memutus perangkat.Output berikut menunjukkan hasilnya. Setelah perangkat lolos verifikasi, perangkat terhubung ke IoT Platform.
broker: ssl://iot-xxx.igw.iothub.aliyuncs.com:1883 Connected broker available ability, retain is available: true broker available ability, shared subscription is available: true publish: content finish Disconnected