Azure IoT 中樞裝置布建服務 (DPS) 的 TLS 支援

DPS 會使用 傳輸層安全性 (TLS) 來保護來自 IoT 裝置的連線。

DPS 目前支援的 TLS 通訊協定版本如下:

  • TLS 1.2

TLS 1.0 和 1.1 被視為舊版,並已規劃淘汰。 如需詳細資訊,請參閱 IoT 中樞即將淘汰 TLS 1.0 和 1.1

限制連接至 TLS 1。2

為了增加安全性,建議您將 DPS 實例設定為 允許使用 TLS 1.2 版的裝置用戶端連線,並強制使用 建議的密碼

若要這樣做,請 minTlsVersion 1.2 在 Azure Resource Manager 範本的 dps 資源規格中,將屬性設定為的新 dps 資源。 下列範例範本 JSON 會指定 minTlsVersion 新 DPS 實例的屬性。

{
    "$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 連接的裝置。 同樣地,如果裝置用戶端的 HELLO 訊息未列出任何 建議的密碼,TLS 信號交換將會遭到拒絕。

注意

minTlsVersion屬性是唯讀的,而且在建立 DPS 資源之後,就無法變更。 因此,您必須適當地測試並驗證 所有 的 IoT 裝置都能與 TLS 1.2 相容,並預先 建議加密密碼

注意

minTlsVersion 容錯移轉之後,您 DPS 的屬性將會在容錯移轉後的地理配對區域中保持有效。

設定為僅接受 TLS 1.2 的 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)

在 IoT Sdk 中使用 TLS 1。2

使用下列連結,在 Azure IoT 用戶端 Sdk 中設定 TLS 1.2 和允許的密碼。

Language 支援 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

搭配 IoT Edge 使用 TLS 1。2

IoT Edge 裝置可設定為在與 IoT 中樞和 DPS 通訊時使用 TLS 1.2。 如需詳細資訊,請參閱 IoT Edge 檔頁面