Skip to content

Commit 497a84f

Browse files
authored
Merge pull request #290905 from kgremban/nov11-baltimore
Baltimore root cert migration has ended
2 parents cbde2cd + 98ac5e6 commit 497a84f

8 files changed

+123
-108
lines changed

articles/iot-dps/concepts-x509-attestation.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,23 @@ Imagine that Contoso is a large corporation with its own Public Key Infrastructu
4949

5050
A *leaf certificate*, or *end-entity certificate*, identifies a certificate holder. It has the root certificate in its certificate chain and zero or more intermediate certificates. A leaf certificate is not used to sign any other certificates. It uniquely identifies a device to the provisioning service and is sometimes referred to as a *device certificate*. During authentication, a device uses the private key associated with its certificate to respond to a proof of possession challenge from the service.
5151

52-
## Use X.509 certificates with DPS
52+
## Prepare certificates
53+
54+
Devices use two different types of certificates when they connect to IoT Hub through DPS. When preparing your device, make sure you have all the proper certificates created and added to the device before connecting.
55+
56+
* Public root certificates: All devices need a copy of the public root certificates that IoT Hub, IoT Central, and Device Provisioning Service use to authorize connections.
57+
* Authentication certificates: X.509 certificates are the recommended method for authenticating a device identity.
58+
59+
### Required public root certificates
60+
61+
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:
62+
63+
* DigiCert Global G2 root CA
64+
* Microsoft RSA root CA 2017
65+
66+
For more information about recommended certificate practices, see [TLS support](./tls-support.md).
67+
68+
## Authentication using X.509 certificates
5369

5470
The provisioning service exposes two enrollment types that you can use to control device access with the X.509 attestation mechanism:
5571

articles/iot-dps/quick-enroll-device-x509.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ ms.subservice: azure-iot-hub-dps
1616

1717
# Programmatically create a Device Provisioning Service enrollment group for X.509 certificate attestation
1818

19-
This article shows you how to programmatically create an [enrollment group](concepts-service.md#enrollment-group) that uses intermediate or root CA X.509 certificates. The enrollment group is created by using the [Azure IoT Hub DPS service SDK](libraries-sdks.md#service-sdks) and a sample application. An enrollment group controls access to the provisioning service for devices that share a common signing certificate in their certificate chain. To learn more, see [Use X.509 certificates with DPS](./concepts-x509-attestation.md#use-x509-certificates-with-dps). For more information about using X.509 certificate-based Public Key Infrastructure (PKI) with Azure IoT Hub and Device Provisioning Service, see [X.509 CA certificate security overview](../iot-hub/iot-hub-x509ca-overview.md).
19+
This article shows you how to programmatically create an [enrollment group](concepts-service.md#enrollment-group) that uses intermediate or root CA X.509 certificates. The enrollment group is created by using the [Azure IoT Hub DPS service SDK](libraries-sdks.md#service-sdks) and a sample application. An enrollment group controls access to the provisioning service for devices that share a common signing certificate in their certificate chain. To learn more, see [Use X.509 certificates with DPS](./concepts-x509-attestation.md#authentication-using-x509-certificates). For more information about using X.509 certificate-based Public Key Infrastructure (PKI) with Azure IoT Hub and Device Provisioning Service, see [X.509 CA certificate security overview](../iot-hub/iot-hub-x509ca-overview.md).
2020

2121
## Prerequisites
2222

articles/iot-dps/tls-support.md

Lines changed: 32 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
| :--- |
@@ -91,9 +91,36 @@ These cipher suites are currently still supported by DPS but will be depreciated
9191

9292
When DPS enrollments are configured for X.509 authentication, mutual TLS (mTLS) is supported by DPS.
9393

94-
## Certificate pinning
94+
## Server TLS certificate
9595

96-
[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).
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.
97+
98+
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.
99+
100+
We strongly recommend that all devices trust the following root CAs:
101+
102+
* DigiCert Global G2 root CA
103+
* Microsoft RSA root CA 2017
104+
105+
For links to download these certificates, see [Azure Certificate Authority details](../security/fundamentals/azure-CA-details.md).
106+
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+
121+
### Certificate pinning
122+
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.
97124

98125
## Use TLS 1.2 in the IoT SDKs
99126

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

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,34 @@ Create a device identity for your device to connect to Azure IoT Hub. This artic
2222

2323
* If your IoT hub is managed with role-based access control (RBAC), then you need **Read/Write/Delete Device/Module** permissions for the steps in this article. Those permissions are included in [IoT Hub Registry Contributor](../role-based-access-control/built-in-roles/internet-of-things.md#iot-hub-registry-contributor) role.
2424

25+
## Prepare certificates
26+
27+
Devices use two different types of certificates to connect to IoT Hub. When preparing your device, make sure you have all the proper certificates created and added to the device before connecting.
28+
29+
* Public root certificates: All devices need a copy of the public root certificates that IoT Hub, IoT Central, and Device Provisioning Service use to authorize connections.
30+
* Authentication certificates: X.509 certificates are the recommended method for authenticating a device identity.
31+
32+
### Required public root certificates
33+
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
38+
39+
For more information about IoT Hub's recommended certificate practices, see [TLS support](./iot-hub-tls-support.md).
40+
41+
### Authentication certificates
42+
43+
If you use X.509 certificate authentication for your devices, make sure your certificates are ready before registering a device:
44+
45+
* For CA-signed certificates, the tutorial [Create and upload certificates for testing](./tutorial-x509-test-certs.md) provides a good introduction for how to create CA-signed certificates and upload them to IoT Hub. After completing that tutorial, you're ready to register a device with **X.509 CA signed** authentication.
46+
47+
* For self-signed certificates, you need two device certificates (a primary and a secondary certificate) on the device and thumbprints for both to upload to IoT Hub. One way to retrieve the thumbprint from a certificate is with the following OpenSSL command:
48+
49+
```bash
50+
openssl x509 -in <certificate filename>.pem -text -fingerprint
51+
```
52+
2553
## Register a device
2654

2755
In this section, you create a device identity in the [identity registry in your IoT hub](./iot-hub-devguide-identity-registry.md). A device can't connect to a hub unless it has a device identity.
@@ -42,18 +70,6 @@ When you register a device, you choose its authentication method. IoT Hub suppor
4270

4371
If your device has a CA-signed X.509 certificate, then you upload a root or intermediate certificate authority (CA) certificate in the signing chain to IoT Hub before you register the device. The device has an X.509 certificate with the verified X.509 CA in its certificate chain of trust. When the device connects, it presents its full certificate chain and the IoT hub can validate it because it knows the X.509 CA. Multiple devices can authenticate against the same verified X.509 CA. For more information, see [Authenticate identities with X.509 certificates](./authenticate-authorize-x509.md).
4472

45-
### Prepare certificates
46-
47-
If you're using either of the X.509 certificate authentication methods, make sure your certificates are ready before registering a device:
48-
49-
* For CA-signed certificates, the tutorial [Create and upload certificates for testing](./tutorial-x509-test-certs.md) provides a good introduction for how to create CA-signed certificates and upload them to IoT Hub. After completing that tutorial, you're ready to register a device with **X.509 CA signed** authentication.
50-
51-
* For self-signed certificates, you need two device certificates (a primary and a secondary certificate) on the device and thumbprints for both to upload to IoT Hub. One way to retrieve the thumbprint from a certificate is with the following OpenSSL command:
52-
53-
```bash
54-
openssl x509 -in <certificate filename>.pem -text -fingerprint
55-
```
56-
5773
### Add a device
5874

5975
Create a device identity in your IoT hub.

0 commit comments

Comments
 (0)