Dukungan TLS di Azure IoT Hub Device Provisioning Service (DPS)
DPS menggunakan Transport Layer Security (TLS) untuk mengamankan koneksi dari perangkat IoT.
Versi protokol TLS saat ini yang didukung oleh DPS adalah:
- TLS 1.2
Membatasi koneksi ke versi TLS minimum
Anda dapat mengonfigurasi instans DPS untuk hanya mengizinkan koneksi klien perangkat yang menggunakan versi TLS minimum atau yang lebih besar.
Penting
Saat ini, DPS hanya mendukung TLS 1.2, jadi tidak perlu menentukan versi TLS minimum saat Anda membuat instans DPS. Fitur ini disediakan untuk ekspansi di masa mendatang.
Untuk melakukan ini, provisikan sumber daya DPS baru dengan mengatur minTlsVersion
properti1.2
dalam spesifikasi sumber daya DPS templat Azure Resource Manager Anda. Dalam contoh berikut templat JSON menentukan properti minTlsVersion
untuk instans DPS baru.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Devices/ProvisioningServices",
"apiVersion": "2020-01-01",
"name": "<provide-a-valid-DPS-resource-name>",
"location": "<any-region>",
"properties": {
"minTlsVersion": "1.2"
},
"sku": {
"name": "S1",
"capacity": 1
},
}
]
}
Anda dapat menyebarkan templat dengan perintah Azure CLI berikut.
az deployment group create -g <your resource group name> --template-file template.json
Untuk informasi selengkapnya tentang membuat sumber daya DPS dengan templat Resource Manager, lihat, Menyiapkan DPS dengan templat Azure Resource Manager.
Sumber daya DPS yang dibuat menggunakan konfigurasi ini menolak perangkat yang mencoba terhubung menggunakan TLS versi 1.0 dan 1.1.
Catatan
Properti minTlsVersion
merupakan properti baca-saja dan tak bisa diubah setelah sumber daya DPS Anda dibuat. Oleh karena itu, penting bagi Anda untuk menguji dan memvalidasi dengan benar bahwa semua perangkat IoT Anda kompatibel dengan TLS 1.2 dan sandi yang direkomendasikan terlebih dahulu.
Catatan
Setelah kegagalan, properti minTlsVersion
DPS Anda akan tetap efektif di wilayah yang dipasangkan geografis pasca-kegagalan.
Sandi yang direkomendasikan
Instans DPS memberlakukan penggunaan suite sandi yang direkomendasikan dan warisan berikut:
Suite sandi TLS 1.2 yang direkomendasikan |
---|
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
Suite sandi warisan
Suite sandi ini masih didukung oleh DPS tetapi akan dipresiasi. Gunakan cipher suite yang direkomendasikan jika memungkinkan.
Opsi #1 (keamanan yang lebih baik) |
---|
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1) TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1) TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) |
Opsi #2 (performa yang lebih baik) |
---|
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1) TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1) TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) |
Dukungan TLS timbal balik
Ketika pendaftaran DPS dikonfigurasi untuk autentikasi X.509, TLS bersama (mTLS) didukung oleh DPS.
Sertifikat TLS server
Selama jabat tangan TLS, DPS menyajikan sertifikat server bertanda RSA untuk menghubungkan klien. Semua instans DPS di cloud Azure global menggunakan sertifikat TLS yang dikeluarkan oleh sertifikat DigiCert Global Root G2.
Sebaiknya tambahkan sertifikat Microsoft RSA Root Certificate Authority 2017 ke perangkat Anda untuk mencegah gangguan jika DigiCert Global Root G2 dihentikan secara tak terduga. Meskipun migrasi CA akar jarang terjadi, untuk ketahanan dalam lanskap keamanan modern, Anda harus menyiapkan skenario IoT Anda untuk kejadian yang tidak mungkin terjadi bahwa CA akar disusupi atau migrasi CA akar darurat diperlukan.
Kami sangat menyarankan agar semua perangkat mempercayai CA akar berikut:
- CA akar DigiCert Global G2
- Microsoft RSA root CA 2017
Untuk tautan untuk mengunduh sertifikat ini, lihat Detail Otoritas Sertifikat Azure.
Kepercayaan sertifikat pada SDK
SDK perangkat Azure IoT menyambungkan dan mengautentikasi perangkat ke layanan Azure IoT. SDK yang berbeda mengelola sertifikat dengan cara yang berbeda tergantung pada bahasa dan versi, tetapi sebagian besar mengandalkan penyimpanan sertifikat tepercaya perangkat daripada menyematkan sertifikat langsung di basis kode. Pendekatan ini memberikan fleksibilitas dan ketahanan untuk menangani perubahan sertifikat akar di masa mendatang.
Tabel berikut ini meringkas versi SDK mana yang mendukung penyimpanan sertifikat tepercaya:
SDK perangkat Azure IoT | Versi yang didukung |
---|---|
C | Semua versi yang saat ini didukung |
C# | Semua versi yang saat ini didukung |
Java | Versi 2.x.x dan yang lebih tinggi |
Node.js | Semua versi yang saat ini didukung |
Python | Semua versi yang saat ini didukung |
Penyematan sertifikat
Penyematan sertifikat dan pemfilteran sertifikat server TLS (juga dikenal sebagai sertifikat daun) dan sertifikat perantara yang terkait dengan titik akhir DPS disarankan karena Microsoft sering menggulung sertifikat ini dengan sedikit atau tanpa pemberitahuan. Jika harus, hanya sematkan sertifikat akar.
Gunakan TLS 1.2 di SDK IoT
Gunakan tautan di bawah ini untuk mengonfigurasi TLS 1.2 dan memungkinkan sandi di SDK klien Azure IoT.
Bahasa | Versi yang mendukung TLS 1.2 | Dokumentasi |
---|---|---|
C | Tag 2019-12-11 atau yang lebih baru | Tautan |
Python | Versi 2.0.0 atau yang lebih baru | Tautan |
C# | Versi 1.21.4 atau yang lebih baru | Tautan |
Java | Versi 1.19.0 atau yang lebih baru | Tautan |
Node.js | Versi 1.12.2 atau yang lebih baru | Tautan |
Gunakan TLS 1.2 dengan IoT Hub
IoT Hub dapat dikonfigurasi untuk menggunakan TLS 1.2 saat berkomunikasi dengan perangkat. Untuk informasi selengkapnya, lihat Penegakan TLS IoT Hub.
Gunakan TLS 1.2 dengan IoT Edge
Perangkat IoT Edge dapat dikonfigurasi untuk menggunakan TLS 1.2 saat berkomunikasi dengan IoT Hub dan DPS. Untuk informasi selengkapnya, lihat Halaman dokumentasi IoT Edge.