Skip to content

Commit 2a50b78

Browse files
Updating TLS support
1 parent 7fd4f59 commit 2a50b78

File tree

3 files changed

+55
-23
lines changed

3 files changed

+55
-23
lines changed

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

Lines changed: 55 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +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.
19+
>
20+
> For customers using weak cipher suites prior to August 31, 2025, Cipher Suite Compatibility Mode may be enabled automatically to allow additional time to update devices to the recommended cipher suites.
1921
>
2022
> 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.
2123
2224

2325
> [!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.
26+
> 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.
2527
>
2628
> Currently, TLS 1.2 enforcement is supported only in select regions:
2729
>
28-
> - East US
29-
> - South Central US
30-
> - West US 2
30+
> - All public cloud regions
3131
> - US Gov Arizona
3232
> - 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).
3333
>
@@ -58,6 +58,8 @@ Root CA migrations are rare. You should always prepare your IoT solution for the
5858

5959
## Cipher Suites
6060

61+
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.
62+
6163
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:
6264

6365
* TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
@@ -69,7 +71,7 @@ To comply with Azure security policy for a secure connection, IoT Hub recommends
6971
* TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
7072
* TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
7173

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.
74+
The following non-recommended cipher suitesare allowed until August 31, 2025:
7375

7476
* TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
7577
* TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
@@ -158,24 +160,54 @@ The created IoT Hub resource using this configuration refuses device and service
158160
> Upon failovers, the `minTlsVersion` property of your IoT Hub remains effective in the geo-paired region post-failover.
159161
160162
## 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.
162163

163-
To view these logs, follow these steps:
164+
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).
165+
166+
### Checking TLS versions using IoT Hub metrics
167+
168+
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.
169+
164170
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.
171+
1. In the left-side menu under **Monitoring**, select **Metrics**.
172+
1. Add the metric **Successful Connects**.
173+
174+
:::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.":::
175+
176+
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.
177+
178+
:::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.":::
179+
180+
1. After applying the filter, you see the sum of devices with successful IoT Hub connections based on the filtered property and value(s).
181+
182+
> [!NOTE]
183+
> TLS version query isn't available for devices using HTTPS connections.
184+
185+
### Checking TLS versions using IoT Hub diagnostic logs
186+
187+
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.
188+
189+
To view these logs, follow these steps:
190+
191+
1. In the [Azure portal](https://portal.azure.com), go to your IoT hub.
192+
1. In the left-side menu under **Monitoring**, select **Diagnostic settings**. Ensure diagnostic settings have "Connections" checked.
193+
1. In the left-side menu under **Monitoring**, select **Logs**.
194+
1. Enter the following query:
195+
196+
```kusto
197+
AzureDiagnostics
198+
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
199+
| where Category == "Connections"
200+
| where OperationName == "deviceConnect"
201+
| extend props_json = parse_json(properties_s)
202+
| project DeviceId = props_json.deviceId, TLSVersion = props_json.tlsVersion
203+
```
204+
205+
1. An example of the query results looks like this:
206+
207+
:::image type="content" source="./media/iot-hub-tls-support/query-result.png" alt-text="Diagram showing the query for device TLS version.":::
208+
209+
> [!NOTE]
210+
> TLS version query isn't available for devices using HTTPS connections.
179211
180212
181213
## TLS configuration for SDK and IoT Edge
@@ -188,7 +220,7 @@ Use the following links to configure TLS 1.2 and allowed ciphers in IoT Hub clie
188220
| Python | Version 2.0.0 or newer | [Link](https://aka.ms/Tls_Python_SDK_IoT) |
189221
| C# | Version 1.21.4 or newer | [Link](https://aka.ms/Tls_CSharp_SDK_IoT) |
190222
| 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) |
223+
| Node.js | Version 1.12.2 or newer | [Link](https://aka.ms/Tls_Node_SDK_IoT) |
192224
193225
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).
194226
136 KB
Loading
128 KB
Loading

0 commit comments

Comments
 (0)