Bagikan melalui


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 minTlsVersionproperti1.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.

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.