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. TLS protokolünün şu anda 1.0, 1.1 ve 1.2 sürümleri gibi üç sürümü desteklenmektedir.

TLS 1.0 ve 1.1 eski olarak kabul edilir ve kullanımdan kaldırılması planlanmaktadır. Daha fazla bilgi için bkz . IoT Hub için TLS 1.0 ve 1.1'i kullanımdan kaldırma. Gelecekteki sorunlardan kaçınmak için IoT Hub'a bağlanırken tek TLS sürümü olarak TLS 1.2'yi kullanın.

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. Geçmişte sertifikaların tamamı Baltimore Cybertrust Kök CA'sından alınmıştı. Baltimore kökü kullanım ömrünün sonunda olduğundan, DigiCert Global G2 adlı yeni bir köke geçiş sürecindeyiz. Bu geçiş, Şu anda IoT Hub'a bağlanan tüm cihazları etkiler. Daha fazla bilgi için bkz . IoT TLS sertifika güncelleştirmesi.

Kök CA geçişleri nadir olsa da, modern güvenlik alanında dayanıklılık için IoT senaryonuzu olası bir kök CA'nın gizliliğinin ihlal edilmesi veya acil durum kök CA geçişinin gerekli olması olasılığına karşı hazırlamanız gerekir. Tüm cihazların aşağıdaki üç kök CA'ya güvenmesini kesinlikle öneririz:

  • Baltimore CyberTrust kök CA'sı
  • 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ı.

Elliptic Curve Cryptography (ECC) sunucusu TLS sertifikası (önizleme)

IoT Hub ECC sunucusu TLS sertifikası genel önizleme için kullanılabilir. 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.

ECC kullanan tüm cihazların aşağıdaki iki kök CA'ya güvenmesini kesinlikle öneririz:

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

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

IoT Hub'ın ECC sunucu sertifikasının önizlemesini görüntülemek için:

  1. Önizleme modu açık yeni bir IoT hub'ı oluşturun.
  2. İstemcinizi yalnızca ECDSA şifreleme paketlerini içerecek şekilde yapılandırın ve RSA paketlerini hariç tutun. ECC sertifikası genel önizlemesi 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 önizleme IoT hub'ına Bağlan.

Belirli bölgelerde TLS 1.2 zorlaması kullanılabilir

Daha fazla güvenlik için IoT Hubs'ınızı yalnızca TLS sürüm 1.2 kullanan istemci bağlantılarına izin verecek ve şifreleme paketlerinin kullanımını zorunlu kacak şekilde yapılandırın. Bu özellik yalnızca şu bölgelerde desteklenir:

  • 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)

TLS 1.2 zorlamasını etkinleştirmek için Azure portalında IoT hub'ı oluşturma

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

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

    Screenshot showing how to turn on TLS 1.2 enforcement during IoT hub creation

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 herhangi 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 önceden uyumlu olduğunu doğrulayıp 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.

Şifre paketleri

Yalnızca TLS 1.2'yi kabul edecek şekilde yapılandırılmış IoT Hub'ları aşağıdaki önerilen şifreleme paketlerinin kullanımını da zorunlu kılacak:

  • 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

TLS 1.2 zorlaması için yapılandırılmamış IoT Hub'ları için TLS 1.2 yine aşağıdaki şifreleme paketleriyle çalışır:

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA(Bu şifre 01.10.2022 tarihinde kullanımdan kaldırılacak ve tls el sıkışmaları için artık kullanılmayacaktır)

İ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 paketi üzerinde anlaşmaya varır.

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ı
NodeJS 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.

Cihaz kimlik doğrulaması

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 bu, ECC de dahil olmak üzere herhangi bir X.509 sertifikası olabilir. IoT Hub, sertifikayı sağladığınız parmak izi veya sertifika yetkilisine (CA) göre doğrular. Daha fazla bilgi edinmek için bkz . Desteklenen X.509 sertifikaları.

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ının veya X.509 parmak izinin kimliğini doğrulamasınısağlar. Kimlik doğrulaması tamamlandıktan sonra IoT Hub tarafından yetkilendirme gerçekleştirilir.

AMQP ve MQTT protokolleri için IoT Hub, ilk TLS el sıkışmasında bir istemci sertifikası istemektedir. 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ı tamamlanmadıysa IoT Hub bağlantıyı reddeder

Sertifika sabitleme

Microsoft bu sertifikaları çok az bildirimle veya hiç bildirimde bulunmadan sık sık toplarken, IoT Hub uç noktalarıyla ilişkili TLS sunucu sertifikalarının (diğer adıyla yaprak sertifikalar) 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.

TLS parça uzunluğu üst sınırı anlaşması (önizleme)

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. Önizleme modu açık yeni bir IoT hub'ı oluşturun.
  2. OpenSSL kullanırken parça boyutunu belirtmek için SSL_CTX_set_tlsext_max_fragment_length çağırın.
  3. İstemcinizi önizleme IoT Hub'ına Bağlan.

Sonraki adımlar