分享方式:


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 文件頁面