Bagikan melalui


Dukungan Keamanan Lapisan Transportasi (TLS) di IoT Hub

IoT Hub menggunakan Keamanan Lapisan Transportasi (TLS) untuk mengamankan koneksi dari perangkat dan layanan IoT.

Catatan

Azure IoT Hub akan mengakhiri dukungan untuk TLS 1.0 dan 1.1 selaras dengan pengumuman layanan luas Azure untuk penghentian TLS 1.0 dan 1.1 pada 31 Agustus 2025.

Oleh karena itu, penting bagi Anda untuk menguji dan memvalidasi dengan benar bahwa semua perangkat dan layanan IoT Anda kompatibel dengan TLS 1.2 dan cipher yang direkomendasikan terlebih dahulu. Sangat disarankan untuk menggunakan fitur penegakan TLS minimum sebagai mekanisme pengujian dan kepatuhan

Untuk mengetahui versi TLS yang dijalankan perangkat IoT Hub Anda, lihat panduan akhir dukungan TLS 1.0 dan 1.1.

Dukungan TLS timbal balik

Autentikasi TLS timbel memastikan bahwa klien mengautentikasi sertifikat server (IoT Hub) dan server (IoT Hub) mengautentikasi klien menggunakan sertifikat klien X.509 atau thumbprint X.509. IoT Hub melakukan otorisasi setelah autentikasi selesai.

Untuk protokol Advanced Message Queuing Protocol (AMQP) dan Message Queuing Telemetry Transport (MQTT), IoT Hub meminta sertifikat klien dalam jabat tangan TLS awal. Jika disediakan, IoT Hub mengautentikasi sertifikat klien, dan klien mengautentikasi sertifikat IoT Hub. Proses ini disebut autentikasi TLS bersama. Ketika IoT Hub menerima paket MQTT connect atau tautan AMQP terbuka, IoT Hub melakukan otorisasi untuk klien yang meminta dan menentukan apakah klien memerlukan autentikasi X.509. Jika autentikasi TLS bersama selesai dan klien berwenang untuk terhubung sebagai perangkat, Ini diizinkan. Namun, jika klien memerlukan autentikasi X.509 dan autentikasi klien tidak selesai selama jabat tangan TLS, maka IoT Hub menolak koneksi.

Untuk protokol HTTP, ketika klien membuat permintaan pertamanya, IoT Hub memeriksa apakah klien memerlukan autentikasi X.509 dan jika autentikasi klien selesai, maka IoT Hub melakukan otorisasi. Jika autentikasi klien tidak selesai, maka IoT Hub menolak koneksi

Setelah jabat tangan TLS berhasil, IoT Hub dapat mengautentikasi perangkat menggunakan kunci konten atau sertifikat X.509. Untuk autentikasi berbasis sertifikat, IoT Hub memvalidasi sertifikat terhadap thumbprint atau otoritas sertifikat (CA) yang Anda berikan. Untuk mempelajari selengkapnya, lihat Mengautentikasi identitas dengan sertifikat X.509.

Sertifikat TLS server IoT Hub

Selama jabat tangan TLS, IoT Hub menyajikan sertifikat server dengan kunci RSA untuk menyambungkan klien. Semua hub IoT di cloud Azure global menggunakan sertifikat TLS yang dikeluarkan oleh DigiCert Global Root G2.

Kami sangat menyarankan agar semua perangkat mempercayai tiga CA root berikut:

  • CA akar DigiCert Global G2
  • Microsoft RSA root CA 2017

Untuk tautan untuk mengunduh sertifikat ini, lihat Detail Otoritas Sertifikat Azure.

Migrasi CA akar jarang terjadi. Anda harus selalu menyiapkan solusi IoT Anda untuk kejadian yang tidak mungkin bahwa CA akar disusupi dan migrasi CA akar darurat diperlukan.

Cipher Suites

Untuk mematuhi kebijakan keamanan Azure untuk koneksi yang aman, IoT Hub mendukung rangkaian sandi RSA dan ECDSA berikut untuk TLS 1.2:

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

Cipher suite berikut saat ini diizinkan di IoT Hub. Namun, suite sandi ini tidak lagi direkomendasikan oleh pedoman keamanan Azure.

Cipher Suites Dukungan Versi TLS
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS 1.2
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 TLS 1.2
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 TLS 1.2
TLS_RSA_WITH_AES_256_GCM_SHA384 TLS 1.2
TLS_RSA_WITH_AES_128_GCM_SHA256 TLS 1.2
TLS_RSA_WITH_AES_256_CBC_SHA256 TLS 1.2
TLS_RSA_WITH_AES_128_CBC_SHA256 TLS 1.2
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS 1.0/1.1/1.2
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS 1.0/1.1/1.2
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_AES_128_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_AES_256_CBC_SHA TLS 1.0/1.1/1.2

Klien dapat menyarankan daftar rangkaian sandi yang lebih tinggi untuk digunakan selama ClientHello. Namun, beberapa dari rangkaian sandi tersebut mungkin tidak didukung oleh IoT Hub (misalnya, ECDHE-ECDSA-AES256-GCM-SHA384). Dalam hal ini, IoT Hub mencoba mengikuti preferensi klien, tetapi akhirnya menegosiasikan cipher suite dengan ServerHello.

Terapkan IoT Hub untuk menggunakan TLS 1.2 dan cipher suite yang kuat

Untuk memastikan perangkat IoT Anda adalah TLS 1.2 dan kepatuhan cipher suites yang kuat, Anda dapat menerapkan kepatuhan menggunakan fitur penegakan TLS minimum di Azure IoT Hub.

Saat ini fitur ini hanya tersedia di wilayah berikut dan selama pembuatan IoT Hub (wilayah Azure lainnya akan didukung pada tahun 2025):

  • AS Timur
  • US Tengah Selatan
  • US Barat 2
  • US Gov Arizona
  • US Gov Virginia (dukungan TLS 1.0/1.1 tidak tersedia di wilayah ini - Pemberlakuan TLS 1.2 harus diaktifkan atau pembuatan IoT Hub gagal)

Untuk mengaktifkan TLS 1.2 dan penegakan cipher suites yang kuat di portal Azure:

  1. Menatap wizard pembuatan IoT Hub di portal Azure

  2. Pilih Wilayah dari salah satu daftar di atas.

  3. Di bawah Manajemen -> Tingkat Lanjut -> Keamanan Lapisan Transportasi (TLS) -> Versi TLS minimum, pilih 1.2. Pengaturan ini hanya muncul untuk IoT Hub yang dibuat di wilayah yang didukung.

    Cuplikan layar memperlihatkan cara mengaktifkan penerapan TLS 1.2 selama pembuatan hub IoT.

  4. Klik Buat

  5. Sambungkan perangkat IoT Anda ke IoT Hub ini

Untuk menggunakan templat ARM untuk pembuatan, sediakan IoT Hub baru di salah satu wilayah yang didukung dan atur properti minTlsVersion ke 1.2 dalam spesifikasi sumber daya:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Devices/IotHubs",
            "apiVersion": "2020-01-01",
            "name": "<provide-a-valid-resource-name>",
            "location": "<any-of-supported-regions-below>",
            "properties": {
                "minTlsVersion": "1.2"
            },
            "sku": {
                "name": "<your-hubs-SKU-name>",
                "tier": "<your-hubs-SKU-tier>",
                "capacity": 1
            }
        }
    ]
}

Sumber daya IoT Hub yang dibuat menggunakan konfigurasi ini menolak klien perangkat dan layanan yang mencoba terhubung menggunakan TLS versi 1.0 dan 1.1. Demikian pula, jabat tangan TLS ditolak jika ClientHello pesan tidak mencantumkan sandi yang direkomendasikan.

Catatan

Properti minTlsVersion bersifat baca-saja dan tidak dapat diubah setelah sumber daya IoT Hub Anda dibuat. Oleh karena itu, penting bagi Anda untuk menguji dan memvalidasi dengan benar bahwa semua perangkat dan layanan IoT Anda kompatibel dengan TLS 1.2 dan cipher yang direkomendasikan terlebih dahulu.

Setelah failover, minTlsVersion properti IoT Hub Anda tetap efektif di wilayah yang dipasangkan secara geografis pasca-failover.

Memeriksa versi TLS untuk perangkat IoT Hub

Azure IoT Hub dapat menyediakan log diagnostik untuk beberapa kategori yang dapat dianalisis menggunakan Log Azure Monitor. Di log koneksi, Anda dapat menemukan Versi TLS untuk perangkat IoT Hub Anda.

Untuk melihat log ini, ikuti langkah-langkah berikut:

  1. Di portal Microsoft Azure, buka IoT hub Anda.
  2. Di menu sumber daya di bawah Pemantauan, pilih Pengaturan diagnostik. Pastikan pengaturan diagnostik memiliki tanda centang "Koneksi".
  3. Di menu sumber daya di bawah Pemantauan, pilih Log.
  4. Masukkan kueri berikut:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| where OperationName == "deviceConnect"
| extend props_json = parse_json(properties_s)
| project DeviceId = props_json.deviceId, TLSVersion = props_json.tlsVersion
  1. Contoh hasil kueri terlihat seperti: Diagram memperlihatkan kueri untuk versi TLS perangkat.
  2. Catatan: Kueri versi TLS tidak tersedia untuk perangkat yang menggunakan koneksi HTTPS.

Konfigurasi TLS untuk SDK dan IoT Edge

Gunakan tautan berikut untuk mengonfigurasi TLS 1.2 dan cipher yang diizinkan di SDK klien IoT Hub.

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

Perangkat IoT Edge dapat dikonfigurasi untuk menggunakan TLS 1.2 saat berkomunikasi dengan IoT Hub. Untuk tujuan ini, gunakan halaman dokumentasi IoT Edge.

Sertifikat TLS server Eliptic Curve Cryptography (ECC)

Meskipun menawarkan keamanan yang serupa dengan sertifikat RSA, validasi sertifikat ECC (dengan rangkaian sandi khusus ECC) menggunakan komputasi, memori, dan bandwidth hingga 40% lebih sedikit. Penghematan ini penting untuk perangkat IoT karena profil dan memorinya yang lebih kecil, dan untuk mendukung kasus penggunaan di lingkungan bandwidth jaringan yang terbatas.

Untuk menggunakan sertifikat server ECC IoT Hub:

  1. Pastikan semua perangkat mempercayai CA akar berikut:
    • CA akar DigiCert Global G2
    • Microsoft RSA root CA 2017
  2. Konfigurasikan klien Anda untuk hanya menyertakan rangkaian sandi ECDSA dan mengecualikan yang RSA. Ini adalah cipher suite yang didukung untuk sertifikat ECC:
    • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  3. Sambungkan klien Anda ke hub IoT.

Negosiasi panjang fragmen maksimum TLS

IoT Hub juga mendukung negosiasi panjang fragmen maksimum TLS, yang kadang-kadang dikenal sebagai negosiasi ukuran bingkai TLS. Fitur ini berada dalam pratinjau publik.

Gunakan fitur ini untuk menentukan panjang fragmen plaintext maksimum ke nilai yang lebih kecil dari byte 2^14 default. Setelah dinegosiasikan, IoT Hub dan klien mulai memecah pesan untuk memastikan semua fragmen lebih kecil dari panjang yang dinegosiasikan. Perilaku ini sangat membantu untuk perangkat yang dibatasi memori atau komputasi. Untuk mempelajari selengkapnya, lihat spesifikasi ekstensi TLS resmi.

Dukungan SDK resmi untuk fitur pratinjau publik ini belum tersedia. Untuk memulai

  1. Membuat IoT Hub.
  2. Saat menggunakan OpenSSL, panggil SSL_CTX_set_tlsext_max_fragment_length untuk menentukan ukuran fragmen.
  3. Sambungkan klien Anda ke IoT Hub.

Penyematan sertifikat

Penyematan sertifikat dan pemfilteran sertifikat server TLS dan sertifikat perantara yang terkait dengan titik akhir IoT Hub sangat tidak disarankan karena Microsoft sering menggulung sertifikat ini dengan sedikit atau tanpa pemberitahuan. Jika harus dilakukan, sematkan sertifikat akar seperti yang dijelaskan dalam posting blog Azure IoT ini saja.

Langkah berikutnya