You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/iot-dps/concepts-x509-attestation.md
+17-1Lines changed: 17 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,23 @@ Imagine that Contoso is a large corporation with its own Public Key Infrastructu
49
49
50
50
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.
51
51
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
53
69
54
70
The provisioning service exposes two enrollment types that you can use to control device access with the X.509 attestation mechanism:
# Programmatically create a Device Provisioning Service enrollment group for X.509 certificate attestation
18
18
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).
Copy file name to clipboardExpand all lines: articles/iot-dps/tls-support.md
+32-5Lines changed: 32 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ author: kgremban
7
7
ms.author: kgremban
8
8
ms.service: azure-iot-hub
9
9
ms.topic: concept-article
10
-
ms.date: 09/15/2022
10
+
ms.date: 11/27/2024
11
11
ms.subservice: azure-iot-hub-dps
12
12
---
13
13
@@ -59,7 +59,7 @@ az deployment group create -g <your resource group name> --template-file templat
59
59
60
60
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).
61
61
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.
63
63
64
64
> [!NOTE]
65
65
> 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
77
77
78
78
### Legacy cipher suites
79
79
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.
81
81
82
82
| Option #1 (better security) |
83
83
| :--- |
@@ -91,9 +91,36 @@ These cipher suites are currently still supported by DPS but will be depreciated
91
91
92
92
When DPS enrollments are configured for X.509 authentication, mutual TLS (mTLS) is supported by DPS.
93
93
94
-
## Certificate pinning
94
+
## Server TLS certificate
95
95
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.
Copy file name to clipboardExpand all lines: articles/iot-hub/create-connect-device.md
+28-12Lines changed: 28 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,6 +22,34 @@ Create a device identity for your device to connect to Azure IoT Hub. This artic
22
22
23
23
* 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.
24
24
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:
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
42
70
43
71
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).
44
72
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:
0 commit comments