Skip to content

Commit 8f300aa

Browse files
committed
Implement feedback; switch migration doc to past tense
1 parent ae81cef commit 8f300aa

File tree

5 files changed

+58
-49
lines changed

5 files changed

+58
-49
lines changed

articles/iot-dps/tls-support.md

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author: kgremban
77
ms.author: kgremban
88
ms.service: azure-iot-hub
99
ms.topic: concept-article
10-
ms.date: 09/15/2022
10+
ms.date: 11/27/2024
1111
ms.subservice: azure-iot-hub-dps
1212
---
1313

@@ -59,7 +59,7 @@ az deployment group create -g <your resource group name> --template-file templat
5959

6060
For more information on creating DPS resources with Resource Manager templates, see, [Set up DPS with an Azure Resource Manager template](quick-setup-auto-provision-rm.md).
6161

62-
The DPS resource created using this configuration will refuse devices that attempt to connect using TLS versions 1.0 and 1.1.
62+
The DPS resource created using this configuration refuses devices that attempt to connect using TLS versions 1.0 and 1.1.
6363

6464
> [!NOTE]
6565
> The `minTlsVersion` property is read-only and cannot be changed once your DPS resource is created. It is therefore essential that you properly test and validate that *all* your IoT devices are compatible with TLS 1.2 and the [recommended ciphers](#recommended-ciphers) in advance.
@@ -77,7 +77,7 @@ DPS instances enforce the use of the following recommended and legacy cipher sui
7777

7878
### Legacy cipher suites
7979

80-
These cipher suites are currently still supported by DPS but will be depreciated. Use the recommended cipher suites above if possible.
80+
These cipher suites are still supported by DPS but will be depreciated. Use the recommended cipher suites if possible.
8181

8282
| Option #1 (better security) |
8383
| :--- |
@@ -93,7 +93,7 @@ When DPS enrollments are configured for X.509 authentication, mutual TLS (mTLS)
9393

9494
## Server TLS certificate
9595

96-
During a TLS handshake, DPS presents RSA-keyed server certificates to connecting clients. All DPS instances in the global Azure cloud use the TLS certificate issued by the DigiCert Global Root G2. The [device SDKs](./iot-hub-devguide-sdks.md) include the DigiCert Global Root G2 TLS certificate they currently need to establish a secure connection to DPS and IoT Hub.
96+
During a TLS handshake, DPS presents RSA-keyed server certificates to connecting clients. All DPS instances in the global Azure cloud use the TLS certificate issued by the DigiCert Global Root G2 certificate.
9797

9898
We also recommend adding the Microsoft RSA Root Certificate Authority 2017 certificates to your devices to prevent disruptions in case the DigiCert Global Root G2 is retired unexpectedly. Although root CA migrations are rare, for resilience in the modern security landscape you should prepare your IoT scenario for the unlikely event that a root CA is compromised or an emergency root CA migration is necessary.
9999

@@ -104,9 +104,23 @@ We strongly recommend that all devices trust the following root CAs:
104104

105105
For links to download these certificates, see [Azure Certificate Authority details](../security/fundamentals/azure-CA-details.md).
106106

107+
### Certificate trust in the SDKs
108+
109+
The [Azure IoT device SDKs](../iot-hub/iot-hub-devguide-sdks.md) connect and authenticate devices to Azure IoT services. The different SDKs manage certificates in different ways depending on the language and version, but most rely on the device's trusted certificate store rather than pinning certificates directly in the codebase. This approach provides flexibility and resilience to handle future changes in root certificates.
110+
111+
The following table summarizes which SDK versions support the trusted certificate store:
112+
113+
| Azure IoT device SDK | Supported versions |
114+
| -------------------- | ------------------ |
115+
| C | All currently supported versions |
116+
| C# | All currently supported versions |
117+
| Java | Version 2.x.x and higher |
118+
| Node.js | All currently supported versions |
119+
| Python | All currently supported versions |
120+
107121
### Certificate pinning
108122

109-
[Certificate pinning](https://www.digicert.com/blog/certificate-pinning-what-is-certificate-pinning) and filtering of the TLS server certificates (aka leaf certificates) and intermediate certificates associated with DPS endpoints is strongly discouraged as Microsoft frequently rolls these certificates with little or no notice. If you must, only pin the root certificates as described in this [Azure IoT blog post](https://techcommunity.microsoft.com/t5/internet-of-things-blog/azure-iot-tls-critical-changes-are-almost-here-and-why-you/ba-p/2393169).
123+
[Certificate pinning](https://www.digicert.com/blog/certificate-pinning-what-is-certificate-pinning) and filtering of the TLS server certificates (also known as leaf certificates) and intermediate certificates associated with DPS endpoints is discouraged as Microsoft frequently rolls these certificates with little or no notice. If you must, only pin the root certificates as described in this [Azure IoT blog post](https://techcommunity.microsoft.com/t5/internet-of-things-blog/azure-iot-tls-critical-changes-are-almost-here-and-why-you/ba-p/2393169).
110124

111125
## Use TLS 1.2 in the IoT SDKs
112126

articles/iot-hub/create-connect-device.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ Devices use two different types of certificates to connect to IoT Hub. When prep
3131

3232
### Required public root certificates
3333

34-
Azure IoT devices use TLS to verify the authenticity of the IoT hub or DPS endpoint they're connecting to. The device SDKs include the DigiCert Global Root G2 TLS certificate they currently need to establish a secure connection to the IoT hub.
34+
Azure IoT devices use TLS to verify the authenticity of the IoT hub or DPS endpoint they're connecting to. Each device needs a copy of the root certificate that IoT Hub and DPS use. We recommend that all devices include the following root CAs in their trusted certificate store:
35+
36+
* DigiCert Global G2 root CA
37+
* Microsoft RSA root CA 2017
3538

3639
For more information about IoT Hub's recommended certificate practices, see [TLS support](./iot-hub-tls-support.md).
3740

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

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
author: kgremban
66
ms.service: azure-iot-hub
77
ms.topic: conceptual
8-
ms.date: 01/05/2024
8+
ms.date: 11/27/2024
99
ms.author: kgremban
1010
---
1111

@@ -17,7 +17,7 @@ TLS 1.0 and 1.1 are considered legacy and are planned for deprecation. For more
1717

1818
## IoT Hub's server TLS certificate
1919

20-
During a TLS handshake, IoT Hub presents RSA-keyed server certificates to connecting clients. All IoT hubs in the global Azure cloud use the TLS certificate issued by the DigiCert Global Root G2. The [device SDKs](./iot-hub-devguide-sdks.md) include the DigiCert Global Root G2 TLS certificate they currently need to establish a secure connection to the IoT hub.
20+
During a TLS handshake, IoT Hub presents RSA-keyed server certificates to connecting clients. All IoT hubs in the global Azure cloud use the TLS certificate issued by the DigiCert Global Root G2.
2121

2222
We also recommend adding the Microsoft RSA Root Certificate Authority 2017 certificates to your devices to prevent disruptions in case the DigiCert Global Root G2 is retired unexpectedly. Although root CA migrations are rare, for resilience in the modern security landscape you should prepare your IoT scenario for the unlikely event that a root CA is compromised or an emergency root CA migration is necessary.
2323

@@ -28,9 +28,23 @@ We strongly recommend that all devices trust the following root CAs:
2828

2929
For links to download these certificates, see [Azure Certificate Authority details](../security/fundamentals/azure-CA-details.md).
3030

31+
### Certificate trust in the SDKs
32+
33+
The [Azure IoT device SDKs](../iot-hub/iot-hub-devguide-sdks.md) connect and authenticate devices to Azure IoT services. The different SDKs manage certificates in different ways depending on the language and version, but most rely on the device's trusted certificate store rather than pinning certificates directly in the codebase. This approach provides flexibility and resilience to handle future changes in root certificates.
34+
35+
The following table summarizes which SDK versions support the trusted certificate store:
36+
37+
| Azure IoT device SDK | Supported versions |
38+
| -------------------- | ------------------ |
39+
| C | All currently supported versions |
40+
| C# | All currently supported versions |
41+
| Java | Version 2.x.x and higher |
42+
| Node.js | All currently supported versions |
43+
| Python | All currently supported versions |
44+
3145
### Certificate pinning
3246

33-
[Certificate pinning](https://www.digicert.com/blog/certificate-pinning-what-is-certificate-pinning) and filtering of the TLS server certificates (aka leaf certificates) and intermediate certificates associated with IoT Hub endpoints is strongly discouraged as Microsoft frequently rolls these certificates with little or no notice. If you must, only pin the root certificates as described in this [Azure IoT blog post](https://techcommunity.microsoft.com/t5/internet-of-things-blog/azure-iot-tls-critical-changes-are-almost-here-and-why-you/ba-p/2393169).
47+
[Certificate pinning](https://www.digicert.com/blog/certificate-pinning-what-is-certificate-pinning) and filtering of the TLS server certificates (also known as leaf certificates) and intermediate certificates associated with IoT Hub endpoints is discouraged as Microsoft frequently rolls these certificates with little or no notice. If you must, only pin the root certificates as described in this [Azure IoT blog post](https://techcommunity.microsoft.com/t5/internet-of-things-blog/azure-iot-tls-critical-changes-are-almost-here-and-why-you/ba-p/2393169).
3448

3549
### Elliptic Curve Cryptography (ECC) server TLS certificate (preview)
3650

@@ -95,7 +109,7 @@ To use ARM template for creation, provision a new IoT Hub in any of the supporte
95109
}
96110
```
97111

98-
The created IoT Hub resource using this configuration will refuse device and service clients that attempt to connect using TLS versions 1.0 and 1.1. Similarly, the TLS handshake will be refused if the `ClientHello` message does not list any of the [recommended ciphers](#cipher-suites).
112+
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).
99113

100114
> [!NOTE]
101115
> The `minTlsVersion` property is read-only and cannot be changed once your IoT Hub resource is created. It is 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.
@@ -104,7 +118,7 @@ The created IoT Hub resource using this configuration will refuse device and ser
104118
105119
## Cipher suites
106120

107-
IoT Hubs that are configured to accept only TLS 1.2 will also enforce the use of the following recommended cipher suites:
121+
IoT Hubs that are configured to accept only TLS 1.2 also enforce the use of the following recommended cipher suites:
108122

109123
* `TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`
110124
* `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384`
@@ -126,11 +140,11 @@ For IoT Hubs not configured for TLS 1.2 enforcement, TLS 1.2 still works with th
126140
* `TLS_RSA_WITH_AES_128_CBC_SHA`
127141
* `TLS_RSA_WITH_3DES_EDE_CBC_SHA` **(This cipher will be deprecated on 10/01/2022 and will no longer be used for TLS handshakes)**
128142

129-
A client can suggest a list of higher cipher suites to use during `ClientHello`. However, some of them might not be supported by IoT Hub (for example, `ECDHE-ECDSA-AES256-GCM-SHA384`). In this case, IoT Hub will try to follow the preference of the client, but eventually negotiate down the cipher suite with `ServerHello`.
143+
A client can suggest a list of higher cipher suites to use during `ClientHello`. However, some of them might not be supported by IoT Hub (for example, `ECDHE-ECDSA-AES256-GCM-SHA384`). In this case, IoT Hub tries to follow the preference of the client, but eventually negotiate down the cipher suite with `ServerHello`.
130144

131145
## TLS configuration for SDK and IoT Edge
132146

133-
Use the links below to configure TLS 1.2 and allowed ciphers in IoT Hub client SDKs.
147+
Use the following links to configure TLS 1.2 and allowed ciphers in IoT Hub client SDKs.
134148

135149
| Language | Versions supporting TLS 1.2 | Documentation |
136150
|----------|------------------------------------|---------------|

0 commit comments

Comments
 (0)