Aracılığıyla paylaş


IoT Hub'da Aktarım Katmanı Güvenliği (TLS) desteği

IoT Hub, IoT cihazlarından ve hizmetlerinden gelen bağlantıların güvenliğini sağlamak için Aktarım Katmanı Güvenliği(TLS) kullanır.

Not

Azure IoT Hub, TLS 1.0 ve 1.1 desteği, 31 Ağustos 2025'te TLS 1.0 ve 1.1 kullanımdan kaldırılacak Azure geniş hizmet duyurusuyla uyumlu olarak sona erecektir.

Bu nedenle, tüm IoT cihazlarınızın ve hizmetlerinizin TLS 1.2 ve önerilen şifrelemelerle uyumlu olduğunu önceden düzgün bir şekilde test edip doğrulamanız önemlidir. Test ve uyumluluk mekanizması olarak en düşük TLS zorlama özelliğinin kullanılması kesinlikle önerilir

IoT Hub cihazlarınızın tls sürümünü öğrenmek için lütfen TLS 1.0 ve 1.1 destek sonu kılavuzuna bakın.

Karşılıklı TLS desteği

Karşılıklı TLS kimlik doğrulaması, istemcinin sunucu (IoT Hub) sertifikasının kimliğini doğrulamasını ve sunucunun (IoT Hub) X.509 istemci sertifikası veya X.509 parmak izi kullanarak istemcinin kimliğini doğrulamasını sağlar. Kimlik doğrulaması tamamlandıktan sonra IoT Hub yetkilendirme gerçekleştirir.

Gelişmiş Message Queuing Protokolü (AMQP) ve Message Queuing Telemetri Aktarımı (MQTT) protokolleri için IoT Hub, ilk TLS el sıkışmasında bir istemci sertifikası ister. Varsa, IoT Hub istemci sertifikasının kimliğini doğrular ve istemci IoT Hub sertifikasının kimliğini doğrular . Bu işleme karşılıklı TLS kimlik doğrulaması adı verilir. IoT Hub bir MQTT bağlantı paketi aldığında veya AMQP bağlantısı açıldığında, IoT Hub istekte bulunan istemci için yetkilendirme gerçekleştirir ve istemcinin X.509 kimlik doğrulaması gerektip gerektirmediğini belirler. Karşılıklı TLS kimlik doğrulaması tamamlandıysa ve istemci cihaz olarak bağlanma yetkisine sahipse buna izin verilir. Ancak istemci X.509 kimlik doğrulaması gerektiriyorsa ve TLS el sıkışması sırasında istemci kimlik doğrulaması tamamlanmamışsa IoT Hub bağlantıyı reddeder.

HTTP protokolü için, istemci ilk isteğini yaptığında IoT Hub, istemcinin X.509 kimlik doğrulaması gerektip gerektirmediğini ve istemci kimlik doğrulamasının tamamlanıp tamamlanmadığını denetler ve IoT Hub yetkilendirme gerçekleştirir. İstemci kimlik doğrulaması tamamlanamadıysa IoT Hub bağlantıyı reddeder

Başarılı bir TLS el sıkışması sonrasında IoT Hub simetrik anahtar veya X.509 sertifikası kullanarak bir cihazın kimliğini doğrulayabilir. Sertifika tabanlı kimlik doğrulaması için IoT Hub, sertifikayı sağladığınız parmak izi veya sertifika yetkilisine (CA) göre doğrular. Daha fazla bilgi için bkz . X.509 sertifikalarıyla kimlik doğrulaması.

IoT Hub'ın sunucu TLS sertifikası

TLS el sıkışması sırasında IoT Hub, istemcileri bağlamak için RSA anahtarlı sunucu sertifikaları sunar. Genel Azure bulutundaki tüm IoT hub'ları DigiCert Genel Kök G2 tarafından verilen TLS sertifikasını kullanır.

Tüm cihazların aşağıdaki üç kök CA'ya güvenmesini kesinlikle öneririz:

  • DigiCert Global G2 kök CA
  • Microsoft RSA kök CA 2017

Bu sertifikaları indirme bağlantıları için bkz . Azure Sertifika Yetkilisi ayrıntıları.

Kök CA geçişleri nadirdir. IoT çözümünüzü her zaman bir kök CA'nın güvenliğinin aşıldığı ve acil durum kök CA geçişinin gerekli olduğu olası olmayan bir olay için hazırlamanız gerekir.

Şifre Paketleri

Güvenli bağlantı için Azure güvenlik ilkesine uymak için IoT Hub, TLS 1.2 için aşağıdaki RSA ve ECDSA şifreleme paketlerini destekler:

  • 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

Şu anda IoT Hub'da aşağıdaki şifreleme paketlerine izin verilir. Ancak bu şifreleme paketleri artık Azure güvenlik yönergeleri tarafından önerilmez.

Şifre Paketleri TLS Sürüm desteği
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

İstemci, sırasında ClientHellokullanmak üzere daha yüksek şifreleme paketlerinin listesini önerebilir. Ancak, bunlardan bazıları IoT Hub tarafından desteklenmeyebilir (örneğin, ECDHE-ECDSA-AES256-GCM-SHA384). Bu durumda, IoT Hub istemcinin tercihini izlemeye çalışır, ancak sonunda ile ServerHelloşifre paketinin üzerinde anlaşmaya varır.

TLS 1.2 ve güçlü şifreleme paketlerini kullanmak için IoT Hub'ı zorunlu kılma

IoT cihazlarınızın TLS 1.2 ve güçlü şifreleme paketleri uyumluluğu olduğundan emin olmak için Azure IoT Hub'da minimum TLS zorlama özelliğini kullanarak uyumluluğu zorunlu kılabilirsiniz.

Şu anda bu özellik yalnızca aşağıdaki bölgelerde ve IoT Hub oluşturma sırasında kullanılabilir (diğer Azure bölgeleri 2025'te desteklenecektir):

  • Doğu ABD
  • Orta Güney ABD
  • Batı ABD 2
  • US Gov Arizona
  • US Gov Virginia (TLS 1.0/1.1 desteği bu bölgede kullanılamıyor - TLS 1.2 zorlaması etkinleştirilmelidir veya IoT hub'ı oluşturulamaz)

Azure portalında TLS 1.2 ve güçlü şifreleme paketleri zorlamasını etkinleştirmek için:

  1. Azure portalında IoT Hub oluşturma sihirbazına bakma

  2. Yukarıdaki listeden bir Bölge seçin.

  3. Yönetim - Gelişmiş ->> Aktarım Katmanı Güvenliği (TLS) -> En düşük TLS sürümü altında 1.2'yi seçin. Bu ayar yalnızca desteklenen bölgede oluşturulan IoT hub'ında görünür.

    IoT hub'ı oluşturma sırasında TLS 1.2 zorlamasını açma işlemini gösteren ekran görüntüsü.

  4. Oluştur seçeneğine tıklayın

  5. IoT cihazlarınızı bu IoT Hub'a bağlama

Arm şablonunu oluşturma amacıyla kullanmak için desteklenen bölgelerden herhangi birinde yeni bir IoT Hub sağlayın ve özelliğini kaynak belirtiminde olarak 1.2 ayarlayınminTlsVersion:

{
    "$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
            }
        }
    ]
}

Bu yapılandırma kullanılarak oluşturulan IoT Hub kaynağı, TLS 1.0 ve 1.1 sürümlerini kullanarak bağlanmaya çalışan cihaz ve hizmet istemcilerini reddeder. Benzer şekilde, ileti önerilen şifrelerden hiçbirini listelemezse ClientHello TLS el sıkışması reddedilir.

Not

minTlsVersion Özelliği salt okunurdur ve IoT Hub kaynağınız oluşturulduktan sonra değiştirilemez. Bu nedenle, tüm IoT cihazlarınızın ve hizmetlerinizin TLS 1.2 ve önerilen şifrelemelerle uyumlu olduğunu önceden düzgün bir şekilde test edip doğrulamanız önemlidir.

Yük devretme sonrasında IoT Hub'ınızın özelliği, minTlsVersion yük devretme sonrasında coğrafi olarak eşleştirilmiş bölgede etkili olmaya devam eder.

IoT Hub cihazları için TLS sürümlerini denetleme

Azure IoT Hub, Azure İzleyici Günlükleri kullanılarak analiz edilebilen çeşitli kategoriler için tanılama günlükleri sağlayabilir. Bağlantı günlüğünde IoT Hub cihazlarınız için TLS Sürümünü bulabilirsiniz.

Bu günlükleri görüntülemek için şu adımları izleyin:

  1. Azure portalında IoT hub'ınıza gidin.
  2. İzleme altındaki kaynak menüsünde Tanılama ayarları'nı seçin. Tanılama ayarlarında "Bağlantılar" onay işaretinin olduğundan emin olun.
  3. İzleme altındaki kaynak menüsünde Günlükler'i seçin.
  4. Şu sorguyu girin:
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. Sorgu sonuçlarına örnek olarak şu şekilde görünür: Cihaz TLS sürümü sorgusunu gösteren diyagram.
  2. Not: HTTPS bağlantıları kullanan cihazlarda TLS sürüm sorgusu kullanılamaz.

SDK ve IoT Edge için TLS yapılandırması

IoT Hub istemci SDK'larında TLS 1.2 ve izin verilen şifrelemeleri yapılandırmak için aşağıdaki bağlantıları kullanın.

Dil TLS 1.2'i destekleyen sürümler Belgeler
C Etiket 2019-12-11 veya üzeri Bağlantı
Python Sürüm 2.0.0 veya üzeri Bağlantı
C# Sürüm 1.21.4 veya üzeri Bağlantı
Java Sürüm 1.19.0 veya üzeri Bağlantı
Node.js Sürüm 1.12.2 veya üzeri Bağlantı

IoT Edge cihazları, IoT Hub ile iletişim kurarken TLS 1.2 kullanacak şekilde yapılandırılabilir. Bu amaçla IoT Edge belgeleri sayfasını kullanın.

Elliptic Curve Cryptography (ECC) sunucusu TLS sertifikası

RSA sertifikalarına benzer bir güvenlik sunarken, ECC sertifika doğrulaması (yalnızca ECC şifreleme paketleriyle) %40'a kadar daha az işlem, bellek ve bant genişliği kullanır. Bu tasarruflar, küçük profilleri ve bellekleri nedeniyle IoT cihazları için ve ağ bant genişliği sınırlı ortamlardaki kullanım örneklerini desteklemek için önemlidir.

IoT Hub'ın ECC sunucu sertifikasını kullanmak için:

  1. Tüm cihazların aşağıdaki kök CA'lara güvendiğinden emin olun:
    • DigiCert Global G2 kök CA
    • Microsoft RSA kök CA 2017
  2. İstemcinizi yalnızca ECDSA şifreleme paketlerini içerecek şekilde yapılandırın ve RSA paketlerini hariç tutun. ECC sertifikası için desteklenen şifreleme paketleri şunlardır:
    • 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. İstemcinizi IoT hub'ına bağlayın.

TLS maksimum parça uzunluğu anlaşması

IoT Hub ayrıca TLS çerçeve boyutu anlaşması olarak da bilinen TLS maksimum parça uzunluğu anlaşmalarını destekler. Bu özellik genel önizleme aşamasındadır.

Varsayılan 2^14 bayttan daha küçük bir değere düz metin parçası uzunluğu üst sınırını belirtmek için bu özelliği kullanın. Üzerinde anlaşmaya varıldıktan sonra IoT Hub ve istemci, tüm parçaların üzerinde anlaşmaya varılan uzunluktan daha küçük olduğundan emin olmak için iletileri parçalama işlemine başlar. Bu davranış, kısıtlanmış cihazları hesaplamak veya bellekle sınırlamak için yararlıdır. Daha fazla bilgi edinmek için resmi TLS uzantısı belirtimlerine bakın.

Bu genel önizleme özelliği için resmi SDK desteği henüz kullanılamıyor. Başlamak için

  1. Bir IoT Hub oluşturma.
  2. OpenSSL kullanırken parça boyutunu belirtmek için SSL_CTX_set_tlsext_max_fragment_length çağırın.
  3. İstemcinizi IoT Hub'a bağlayın.

Sertifika sabitleme

Microsoft bu sertifikaları çok az bildirimle veya hiç bildirimde bulunmadan sık sık toplandığından, IoT Hub uç noktalarıyla ilişkili TLS sunucu sertifikalarının ve ara sertifikaların sertifika sabitlemesi ve filtrelenmesi kesinlikle önerilmez. Gerekirse, yalnızca bu Azure IoT blog gönderisinde açıklandığı gibi kök sertifikaları sabitleyin.

Sonraki adımlar