Skip to content

Commit 33ddf52

Browse files
authored
Merge pull request #303449 from SoniaLopezBravo/update-tls-support-part2
Update TLS support in IoT Hub
2 parents b4afc41 + a573b7d commit 33ddf52

File tree

3 files changed

+65
-38
lines changed

3 files changed

+65
-38
lines changed

articles/iot-hub/iot-hub-tls-support.md

Lines changed: 65 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,19 @@
1515
IoT Hub uses Transport Layer Security (TLS) to secure connections from IoT devices and services.
1616

1717
> [!NOTE]
18-
> Azure IoT Hub will end support for TLS 1.0 and 1.1 in alignment with the Azure wide service announcement for [TLS 1.0 and 1.1 retirement](https://azure.microsoft.com/updates?id=update-retirement-tls1-0-tls1-1-versions-azure-services) on **August 31, 2025**.
18+
> Azure IoT Hub will end support for TLS 1.0 and 1.1 in alignment with the Azure wide service announcement for [TLS 1.0 and 1.1 retirement](https://azure.microsoft.com/updates?id=update-retirement-tls1-0-tls1-1-versions-azure-services) on **August 31, 2025**. In addition, IoT Hub will no longer support weak cipher suites as of August 31, 2025. Only recommended strong cipher suites will be supported for both existing and new IoT Hubs.
1919
>
2020
> It's therefore essential that you properly test and validate that *all* your IoT devices and services are compatible with TLS 1.2 and the [recommended ciphers](#cipher-suites) in advance. It's highly recommended to use the [minimum TLS enforcement feature](#enforce-iot-hub-to-use-tls-12-and-strong-cipher-suites) as the mechanism for testing and compliance.
2121
2222

2323
> [!IMPORTANT]
24-
> It’s important to distinguish between **TLS 1.2 support** and **TLS 1.2 enforcement**. TLS 1.2 is supported on all IoT Hubs, meaning that IoT Hubs can handle connections using the TLS 1.2 protocol. On the other hand, TLS 1.2 enforcement ensures that IoT Hub **only** accepts connections using TLS 1.2 or higher. When TLS 1.2 enforcement is enabled, the service also enforces the use of [strong cipher suites](#cipher-suites) as described above. Future updates will allow for the enforcement of TLS 1.2 while permitting non-recommended cipher suites.
24+
> It’s important to distinguish between **TLS 1.2 support** and **TLS 1.2 enforcement**. TLS 1.2 is supported on all IoT Hubs, meaning that IoT Hubs can handle connections using the TLS 1.2 protocol. On the other hand, TLS 1.2 enforcement ensures that IoT Hub **only** accepts connections using TLS 1.2 or higher. When TLS 1.2 enforcement is enabled, the service also enforces the use of [strong cipher suites](#cipher-suites).
2525
>
2626
> Currently, TLS 1.2 enforcement is supported only in select regions:
2727
>
28-
> - East US
29-
> - South Central US
30-
> - West US 2
28+
> - All public cloud regions
3129
> - US Gov Arizona
32-
> - US Gov Virginia (Note: TLS 1.0/1.1 support isn't available in this region. TLS 1.2 enforcement must be enabled, or IoT Hub creation will fail).
30+
> - US Gov Virginia (TLS 1.0/1.1 support isn't available in this region. TLS 1.2 enforcement must be enabled or IoT Hub creation fails).
3331
>
3432
> To find out the version of TLS your IoT Hub devices are running, refer to [TLS 1.0 and 1.1 end of support guide](#checking-tls-versions-for-iot-hub-devices).
3533
@@ -56,9 +54,11 @@ For links to download these certificates, see [Azure Certificate Authority detai
5654

5755
Root CA migrations are rare. You should always prepare your IoT solution for the unlikely event that a root CA is compromised and an emergency root CA migration is necessary.
5856

59-
## Cipher Suites
57+
## Cipher suites
6058

61-
To comply with Azure security policy for a secure connection, IoT Hub recommends the following RSA and ECDSA cipher suites that require minimum TLS 1.2 enforcement:
59+
Starting **August 31, 2025**, IoT Hub enforces the use of recommended strong cipher suites for all existing and new IoT Hubs. Non-recommended (weak) cipher suites aren't supported past this date.
60+
61+
To comply with Azure security policy for a secure connection, IoT Hub only supports the following RSA and ECDSA cipher suites that require minimum TLS 1.2 enforcement:
6262

6363
* TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
6464
* TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
@@ -69,7 +69,7 @@ To comply with Azure security policy for a secure connection, IoT Hub recommends
6969
* TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
7070
* TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
7171

72-
The following cipher suites are currently allowed in IoT Hub. However, these cipher suites are no longer recommended by the Azure security guidelines. These cipher suites work with TLS versions 1.0, 1.1, and 1.2.
72+
The following non-recommended cipher suitesare allowed until August 31, 2025:
7373

7474
* TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
7575
* TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
@@ -103,29 +103,26 @@ To update IoT Hub to support TLS 1.2 and/or enforce strong cipher suites in Azur
103103
> [!NOTE]
104104
> You can update your IoT Hub to TLS 1.2 in ALL public regions. However, if you update an IoT Hub in one of the selected regions (East US, South Central US, West US 2, US Gov Arizona, and US Gov Virginia), it will enforce stronger cipher suites.
105105
106-
107106
## Enforce IoT Hub to use TLS 1.2 and strong cipher suites
108107

109108
To ensure your IoT devices are TLS 1.2 and [strong cipher suites](#cipher-suites) compliance, you can enforce compliance using minimum TLS enforcement feature in Azure IoT Hub.
110109

111-
Currently this feature is only available in the following regions and during IoT Hub creation (other Azure regions will be supported in 2025):
110+
Currently this feature is only available in the following regions and during IoT Hub creation:
112111

113-
* East US
114-
* South Central US
115-
* West US 2
112+
* Public cloud regions:
116113
* US Gov Arizona
117114
* US Gov Virginia (TLS 1.0/1.1 support isn't available in this region - TLS 1.2 enforcement must be enabled or IoT hub creation fails)
118115

119116
To enable TLS 1.2 and strong cipher suites enforcement in Azure portal:
120117

121-
1. Starting with the IoT Hub create wizard in Azure portal
122-
2. Choose a **Region** from one in the list above.
123-
3. Under **Management -> Advanced -> Transport Layer Security (TLS) -> Minimum TLS version**, select **1.2**. This setting only appears for IoT hub created in supported region.
118+
1. Go to the IoT Hub create wizard in Azure portal.
119+
1. Choose a **Region** from the list of supported regions.
120+
1. Under **Management -> Advanced -> Transport Layer Security (TLS) -> Minimum TLS version**, select **1.2**. This setting only appears for IoT hub created in supported region.
124121

125122
:::image type="content" source="media/iot-hub-tls-12-enforcement.png" alt-text="Screenshot showing how to turn on TLS 1.2 enforcement during IoT hub creation.":::
126123

127-
4. Select **Create**
128-
5. Connect your IoT devices to this IoT Hub
124+
1. Select **Create**
125+
1. Connect your IoT devices to this IoT Hub.
129126

130127
To use ARM template for creation, provision a new IoT Hub in any of the supported regions and set the `minTlsVersion` property to `1.2` in the resource specification:
131128

@@ -152,30 +149,60 @@ To use ARM template for creation, provision a new IoT Hub in any of the supporte
152149
}
153150
```
154151

155-
The created IoT Hub resource using this configuration refuses device and service clients that attempt to connect using TLS versions 1.0 and 1.1. Similarly, the TLS handshake is refused if the `ClientHello` message doesn't list any of the [recommended ciphers](#cipher-suites).
152+
The created IoT hub resource using this configuration refuses device and service clients that attempt to connect using TLS versions 1.0 and 1.1. Similarly, the TLS handshake is refused if the `ClientHello` message doesn't list any of the [recommended ciphers](#cipher-suites).
156153

157154
> [!NOTE]
158-
> Upon failovers, the `minTlsVersion` property of your IoT Hub remains effective in the geo-paired region post-failover.
155+
> Upon failover, the `minTlsVersion` property of your IoT Hub remains effective in the geo-paired region post-failover.
159156
160157
## Checking TLS versions for IoT Hub devices
161-
Azure IoT Hub can provide diagnostic logs for several categories that can be analyzed using Azure Monitor Logs. In the connections log you can find the TLS Version for your IoT Hub devices.
162158

163-
To view these logs, follow these steps:
159+
Azure IoT Hub provides the capability to check the TLS version and other device connection metrics to help monitor the security of IoT devices. You can either use IoT Hub metrics or diagnostic logs to track TLS version usage and other related properties like [Cipher Suites](#cipher-suites).
160+
161+
### Checking TLS versions using IoT Hub metrics
162+
163+
If you want to validate that device traffic to IoT Hub is utilizing TLSv1.2, you can check IoT Hub’s metrics. This allows you to filter by TLS version or Cipher Suite and check the number of successful connections.
164+
164165
1. In the [Azure portal](https://portal.azure.com), go to your IoT hub.
165-
2. In the resource menu under **Monitoring**, select **Diagnostic settings**. Ensure diagnostic settings have "Connections" checkmarked.
166-
3. In the resource menu under **Monitoring**, select **Logs**.
167-
4. Enter the following query:
168-
```azurecli
169-
AzureDiagnostics
170-
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
171-
| where Category == "Connections"
172-
| where OperationName == "deviceConnect"
173-
| extend props_json = parse_json(properties_s)
174-
| project DeviceId = props_json.deviceId, TLSVersion = props_json.tlsVersion
175-
```
176-
5. An example of the query results looks like:
177-
:::image type="content" source="./media/iot-hub-tls-support/query-result.png" alt-text="Diagram showing the query for device TLS version.":::
178-
6. Note: TLS version query is not available for devices using HTTPS connections.
166+
1. In the left-side menu under **Monitoring**, select **Metrics**.
167+
1. Add the metric **Successful Connects**.
168+
169+
:::image type="content" source="./media/iot-hub-tls-support/tls-versions-support-metrics.png" alt-text="Screenshot showing how to add the Successful Connects metric.":::
170+
171+
1. Filter by TLS Version or Cipher Suite by selecting the **Add filter** button and choosing the appropriate property, TLS Version or Cipher Suite, operator, for example "=", and value, for example, TLSv1.2.
172+
173+
:::image type="content" source="./media/iot-hub-tls-support/tls-versions-support-metrics-filter.png" alt-text="Screenshot showing how to filter by TLS Version or Cipher Suite.":::
174+
175+
1. After applying the filter, you see the sum of devices with successful IoT Hub connections based on the filtered property and value(s).
176+
177+
> [!NOTE]
178+
> TLS version query isn't available for devices using HTTPS connections.
179+
180+
### Checking TLS versions using IoT Hub diagnostic logs
181+
182+
Azure IoT Hub can provide diagnostic logs for several categories that can be analyzed using Azure Monitor Logs. In the connections log you can find the TLS version for your IoT Hub devices.
183+
184+
To view these logs, follow these steps:
185+
186+
1. In the [Azure portal](https://portal.azure.com), go to your IoT hub.
187+
1. In the left-side menu under **Monitoring**, select **Diagnostic settings**. Ensure diagnostic settings have "Connections" checked.
188+
1. In the left-side menu under **Monitoring**, select **Logs**.
189+
1. Enter the following query:
190+
191+
```kusto
192+
AzureDiagnostics
193+
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
194+
| where Category == "Connections"
195+
| where OperationName == "deviceConnect"
196+
| extend props_json = parse_json(properties_s)
197+
| project DeviceId = props_json.deviceId, TLSVersion = props_json.tlsVersion
198+
```
199+
200+
1. An example of the query results looks like this:
201+
202+
:::image type="content" source="./media/iot-hub-tls-support/query-result.png" alt-text="Diagram showing the query for device TLS version.":::
203+
204+
> [!NOTE]
205+
> TLS version query isn't available for devices using HTTPS connections.
179206
180207
181208
## TLS configuration for SDK and IoT Edge
@@ -188,7 +215,7 @@ Use the following links to configure TLS 1.2 and allowed ciphers in IoT Hub clie
188215
| Python | Version 2.0.0 or newer | [Link](https://aka.ms/Tls_Python_SDK_IoT) |
189216
| C# | Version 1.21.4 or newer | [Link](https://aka.ms/Tls_CSharp_SDK_IoT) |
190217
| Java | Version 1.19.0 or newer | [Link](https://aka.ms/Tls_Java_SDK_IoT) |
191-
| Node.js | Version 1.12.2 or newer | [Link](https://aka.ms/Tls_Node_SDK_IoT) |
218+
| Node.js | Version 1.12.2 or newer | [Link](https://aka.ms/Tls_Node_SDK_IoT) |
192219
193220
IoT Edge devices can be configured to use TLS 1.2 when communicating with IoT Hub. For this purpose, use the [IoT Edge documentation page](https://github.com/Azure/iotedge/blob/master/edge-modules/edgehub-proxy/README.md).
194221
136 KB
Loading
128 KB
Loading

0 commit comments

Comments
 (0)