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

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

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

  • TLS 1.2

限制最低 TLS 版本的連線

您可以將 DPS 實例設定為 允許使用最低 TLS 版本或更新版本的裝置用戶端連線。

重要

目前,DPS 僅支援 TLS 1.2,因此當您建立 DPS 實例時,不需要指定最低 TLS 版本。 這項功能是針對未來的擴充而提供。

若要這樣做,請在 Azure Resource Manager範本的 DPS 資源規格中,將 屬性設定 minTlsVersion1.2 。 下列範例範本 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 版進行連線的裝置。

注意

屬性 minTlsVersion 是唯讀的,一旦建立 DPS 資源之後就無法變更。 因此,您必須正確測試並驗證 所有 IoT 裝置是否與 TLS 1.2 相容,以及事先 建議的加密

注意

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

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

憑證關聯

強烈建議您不建議 (與 DPS 端點相關聯的 TLS 伺服器憑證) 和中繼憑證的 TLS 伺服器憑證釘選和篩選,因為Microsoft經常擲回這些憑證,但很少或沒有通知。 若您必須使用,請僅與根憑證建立關聯,如 Azure IoT 部落格文章中所述。

在 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檔頁面