Azure IoT Hub Cihaz Sağlama Hizmeti'nde (DPS) TLS desteği
DPS, IoT cihazlarından gelen bağlantıların güvenliğini sağlamak için Aktarım Katmanı Güvenliği(TLS) kullanır.
DPS tarafından desteklenen geçerli TLS protokolü sürümleri şunlardır:
- TLS 1.2
Bağlantıları en düşük TLS sürümüyle kısıtlama
DPS örneklerinizi yalnızca en düşük TLS veya daha yüksek bir sürümü kullanan cihaz istemci bağlantılarına izin verecek şekilde yapılandırabilirsiniz.
Önemli
Şu anda DPS yalnızca TLS 1.2'yi desteklediğinden, bir DPS örneği oluştururken en düşük TLS sürümünü belirtmenize gerek yoktur. Bu özellik gelecekte genişletilmesi için sağlanır.
Bunu yapmak için Azure Resource Manager şablonunuzun DPS kaynak belirtiminde özelliğini 1.2
olarak ayaran minTlsVersion
yeni bir DPS kaynağı sağlayın. Aşağıdaki örnek JSON şablonu, yeni bir DPS örneğinin minTlsVersion
özelliğini belirtir.
{
"$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
},
}
]
}
Şablonu aşağıdaki Azure CLI komutuyla dağıtabilirsiniz.
az deployment group create -g <your resource group name> --template-file template.json
Resource Manager şablonlarıyla DPS kaynakları oluşturma hakkında daha fazla bilgi için bkz . Azure Resource Manager şablonuyla DPS'yi ayarlama.
Bu yapılandırma kullanılarak oluşturulan DPS kaynağı, TLS 1.0 ve 1.1 sürümlerini kullanarak bağlanmaya çalışan cihazları reddeder.
Not
minTlsVersion
Özelliği salt okunurdur ve DPS kaynağınız oluşturulduktan sonra değiştirilemez. Bu nedenle, tüm IoT cihazlarınızın TLS 1.2 ve önerilen şifrelerle önceden uyumlu olduğunu düzgün bir şekilde test edip doğrulamanız önemlidir.
Not
Yük devretme sonrasında DPS'nizin özelliği, minTlsVersion
yük devretme sonrasında coğrafi olarak eşleştirilmiş bölgede etkili olmaya devam eder.
Önerilen şifreler
DPS örnekleri aşağıdaki önerilen ve eski şifreleme paketlerinin kullanılmasını zorunlu kılır:
Önerilen TLS 1.2 şifreleme paketleri |
---|
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 |
Eski şifreleme paketleri
Bu şifreleme paketleri DPS tarafından hala desteklenmektedir ancak kullanımdan kaldırılacaktır. Mümkünse önerilen şifreleme paketlerini kullanın.
Seçenek 1 (daha iyi güvenlik) |
---|
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) |
Seçenek 2 (daha iyi performans) |
---|
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) |
Karşılıklı TLS desteği
DPS kayıtları X.509 kimlik doğrulaması için yapılandırıldığında, DPS tarafından karşılıklı TLS (mTLS) desteklenir.
Sunucu TLS sertifikası
TLS el sıkışması sırasında DPS, istemcileri bağlamak için RSA anahtarlı sunucu sertifikaları sunar. Genel Azure bulutundaki tüm DPS örnekleri, DigiCert Genel Kök G2 sertifikası tarafından verilen TLS sertifikasını kullanır.
Ayrıca, DigiCert Genel Kök G2'nin beklenmedik bir şekilde kullanımdan kaldırılıyor olması durumunda kesintileri önlemek için cihazlarınıza Microsoft RSA Kök Sertifika Yetkilisi 2017 sertifikalarını eklemenizi öneririz. 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'lara 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ı.
SDK'larda sertifika güveni
Azure IoT cihaz SDK'ları , cihazları Azure IoT hizmetlerine bağlar ve kimlik doğrulaması yapar. Farklı SDK'lar sertifikaları dile ve sürüme bağlı olarak farklı şekillerde yönetir, ancak çoğu sertifikayı doğrudan kod tabanına sabitlemek yerine cihazın güvenilen sertifika deposuna güvenir. Bu yaklaşım, kök sertifikalarda gelecekteki değişiklikleri işlemek için esneklik ve dayanıklılık sağlar.
Aşağıdaki tabloda hangi SDK sürümlerinin güvenilen sertifika depoyu desteklediği özetlenmektedir:
Azure IoT cihaz SDK’sı | Desteklenen sürümler |
---|---|
C | Şu anda desteklenen tüm sürümler |
C# | Şu anda desteklenen tüm sürümler |
Java | Sürüm 2.x.x ve üzeri |
Node.js | Şu anda desteklenen tüm sürümler |
Python | Şu anda desteklenen tüm sürümler |
Sertifika sabitleme
Microsoft bu sertifikaları çok az bildirimle veya hiç bildirimde bulunmadan sık sık toplarken TLS sunucu sertifikalarının (yaprak sertifikalar olarak da bilinir) ve DPS uç noktalarıyla ilişkilendirilmiş ara sertifikaların sertifika sabitlemesi ve filtrelenmesi önerilmez. Gerekirse, yalnızca kök sertifikaları sabitleyin.
IoT SDK'larında TLS 1.2 kullanma
Azure IoT 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 Hub ile TLS 1.2 kullanma
IoT Hub, cihazlarla iletişim kurarken TLS 1.2 kullanacak şekilde yapılandırılabilir. Daha fazla bilgi için bkz . IoT Hub TLS zorlaması.
IoT Edge ile TLS 1.2 kullanma
IoT Edge cihazları, IoT Hub ve DPS ile iletişim kurarken TLS 1.2 kullanacak şekilde yapılandırılabilir. Daha fazla bilgi için IoT Edge belgeleri sayfasına bakın.