Azure IoT 中樞裝置佈建服務 (DPS) 中的 TLS 支援
DPS 使用傳輸層安全性 (TLS) 來保護 IoT 裝置的連線。
DPS 支援的目前 TLS 通訊協定版本如下:
- TLS 1.2
限制連線到最低 TLS 版本
您可以將 DPS 執行個體設定為只允許使用最低 TLS 版本或更新版本的裝置用戶端連線。
重要
目前,DPS 僅支援 TLS 1.2,因此建立 DPS 執行個體時,不需要指定最低 TLS 版本。 這項功能是針對未來的擴充所提供。
若要這樣做,請在 Azure Resource Manager 範本的 DPS 資源規格中,將 minTlsVersion
屬性設定為 1.2
。 下列範例範本 JSON 會指定新 DPS 執行個體的 minTlsVersion
屬性。
{
"$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
},
}
]
}
您可以使用下列 Azure CLI 命令來部署範本。
az deployment group create -g <your resource group name> --template-file template.json
如需使用 Resource Manager 範本建立 DPS 資源的詳細資訊,請參閱使用 Azure Resource Manager 範本設定 DPS。
使用此設定建立的 DPS 資源將會拒絕嘗試使用 TLS 1.0 和 1.1 版連線的裝置。
注意
minTlsVersion
屬性是唯讀的,且無法在建立 DPS 資源之後進行變更。 因此,您必須事先適當地測試並驗證「所有」IoT 裝置都符合 TLS 1.2 和建議的加密規範。
注意
容錯移轉之後,您 DPS 的 minTlsVersion
屬性會在容錯移轉後的異地配對區域中維持有效。
建議的加密
DPS 執行個體會強制使用下列建議和舊版的加密套件:
建議的 TLS 1.2 加密套件 |
---|
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 |
舊版加密套件
DPS 目前仍支援這些加密套件,但加密套件將會過時。 請使用上述建議的加密套件 (如果可能)。
選項 #1 (更好的安全性) |
---|
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) |
選項 #2 (更好的效能) |
---|
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) |
相互 TLS 支援
當 DPS 註冊設定為 X.509 驗證時,DPS 支援相互 TLS (mTLS)。
憑證釘選
強烈不建議使用憑證關聯和 TLS 伺服器憑證 (亦即分葉憑證) 篩選,以及與 DPS 端點相關聯的中繼憑證,因為 Microsoft 會經常推出這些憑證但可能不會另行通知。 若您必須使用,請僅與根憑證建立關聯,如 Azure IoT 部落格文章中所述。
在 IoT SDK 中使用 TLS 1.2
使用下列連結,在 Azure IoT 用戶端 SDK 中設定 TLS 1.2 和允許的加密。
語言 | 支援 TLS 1.2 的版本 | 文件 |
---|---|---|
C | 標記 2019-12-11 或更新版本 | 連結 |
Python | 2.0.0 版或更新版本 | 連結 |
C# | 1.21.4 版或更新版本 | 連結 |
Java | 1.19.0 版或更新版本 | 連結 |
NodeJS | 1.12.2 版或更新版本 | 連結 |
使用 TLS 1.2 搭配 IoT 中樞
您可將 IoT 中樞設定為使用 TLS 1.2 來與裝置通訊。 如需詳細資訊,請參閱 IoT 中樞即將淘汰 TLS 1.0 和 1.1。
使用 TLS 1.2 搭配 IoT Edge
您可將 IoT Edge 裝置設定為使用 TLS 1.2 來與 IoT 中樞和 DPS 通訊。 如需詳細資訊,請參閱 IoT Edge 文件頁面。