Skip to content

Commit 35de0aa

Browse files
committed
Add explicit mentions of mTLS support
1 parent 42a785e commit 35de0aa

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

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

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ X.509 certificates can be stored in a hardware security module HSM.
1818
> [!TIP]
1919
> We strongly recommend using an HSM with devices to securely store secrets, like the X.509 certificate, on your devices in production.
2020
21-
2221
## X.509 certificates
2322

2423
Using X.509 certificates as an attestation mechanism is an excellent way to scale production and simplify device provisioning. X.509 certificates are typically arranged in a certificate chain of trust in which each certificate in the chain is signed by the private key of the next higher certificate, and so on, terminating in a self-signed root certificate. This arrangement establishes a delegated chain of trust from the root certificate generated by a trusted root certificate authority (CA) down through each intermediate CA to the end-entity "leaf" certificate installed on a device. To learn more, see [Device Authentication using X.509 CA Certificates](../iot-hub/iot-hub-x509ca-overview.md).
2524

2625
Often the certificate chain represents some logical or physical hierarchy associated with devices. For example, a manufacturer may:
26+
2727
- issue a self-signed root CA certificate
2828
- use the root certificate to generate a unique intermediate CA certificate for each factory
2929
- use each factory's certificate to generate a unique intermediate CA certificate for each production line in the plant
30-
- and finally use the production line certificate, to generate a unique device (end-entity) certificate for each device manufactured on the line.
30+
- and finally use the production line certificate, to generate a unique device (end-entity) certificate for each device manufactured on the line.
3131

3232
To learn more, see [Conceptual understanding of X.509 CA certificates in the IoT industry](../iot-hub/iot-hub-x509ca-concept.md).
3333

@@ -39,12 +39,12 @@ A root certificate is a self-signed X.509 certificate representing a certificate
3939

4040
An intermediate certificate is an X.509 certificate, which has been signed by the root certificate (or by another intermediate certificate with the root certificate in its chain). The last intermediate certificate in a chain is used to sign the leaf certificate. An intermediate certificate can also be referred to as an intermediate CA certificate.
4141

42-
##### Why are intermediate certs useful?
42+
#### Why are intermediate certs useful?
43+
4344
Intermediate certificates are used in a variety of ways. For example, intermediate certificates can be used to group devices by product lines, customers purchasing devices, company divisions, or factories.
4445

4546
Imagine that Contoso is a large corporation with its own Public Key Infrastructure (PKI) using the root certificate named *ContosoRootCert*. Each subsidiary of Contoso has their own intermediate certificate that is signed by *ContosoRootCert*. Each subsidiary will then use their intermediate certificate to sign their leaf certificates for each device. In this scenario, Contoso can use a single DPS instance where *ContosoRootCert* has been verified with [proof-of-possession](./how-to-verify-certificates.md). They can have an enrollment group for each subsidiary. This way each individual subsidiary will not have to worry about verifying certificates.
4647

47-
4848
### End-entity "leaf" certificate
4949

5050
The leaf certificate, or end-entity certificate, identifies the certificate holder. It has the root certificate in its certificate chain as well as zero or more intermediate certificates. The leaf certificate is not used to sign any other certificates. It uniquely identifies the device to the provisioning service and is sometimes referred to as the device certificate. During authentication, the device uses the private key associated with this certificate to respond to a proof of possession challenge from the service.
@@ -62,7 +62,11 @@ The provisioning service exposes two enrollment types that you can use to contro
6262
- [Individual enrollment](./concepts-service.md#individual-enrollment) entries are configured with the device certificate associated with a specific device. These entries control enrollments for specific devices.
6363
- [Enrollment group](./concepts-service.md#enrollment-group) entries are associated with a specific intermediate or root CA certificate. These entries control enrollments for all devices that have that intermediate or root certificate in their certificate chain.
6464

65-
#### DPS device chain requirements
65+
### Mutual TLS support
66+
67+
When DPS enrollments are configured for X.509 attestation, mutual TLS (mTLS) is supported by DPS.
68+
69+
### DPS device chain requirements
6670

6771
When a device is attempting registration through DPS using an enrollment group, the device must send the certificate chain from the leaf certificate to a certificate verified with [proof-of-possession](how-to-verify-certificates.md). Otherwise, authentication will fail.
6872

@@ -84,14 +88,11 @@ If the device sends the full device chain as follows during provisioning, then D
8488

8589
![Example device certificate chain](./media/concepts-x509-attestation/example-device-cert-chain.png)
8690

87-
88-
89-
9091
> [!NOTE]
9192
> Intermediate certificates can also be verified with [proof-of-possession](how-to-verify-certificates.md)..
9293
94+
### DPS order of operations with certificates
9395

94-
#### DPS order of operations with certificates
9596
When a device connects to the provisioning service, the service prioritizes more specific enrollment entries over less specific enrollment entries. That is, if an individual enrollment for the device exists, the provisioning service applies that entry. If there is no individual enrollment for the device and an enrollment group for the first intermediate certificate in the device's certificate chain exists, the service applies that entry, and so on, down the chain to the root. The service applies the first applicable entry that it finds, such that:
9697

9798
- If the first enrollment entry found is enabled, the service provisions the device.

articles/iot-dps/tls-support.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313

1414
DPS uses [Transport Layer Security (TLS)](http://wikipedia.org/wiki/Transport_Layer_Security) to secure connections from IoT devices.
1515

16-
Current TLS protocol versions supported by DPS are:
16+
Current TLS protocol versions supported by DPS are:
17+
1718
* TLS 1.2
1819

1920
## Restrict connections to TLS 1.2
@@ -57,7 +58,6 @@ The DPS resource created using this configuration will refuse devices that attem
5758
> [!NOTE]
5859
> 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.
5960
60-
6161
> [!NOTE]
6262
> Upon failovers, the `minTlsVersion` property of your DPS will remain effective in the geo-paired region post-failover.
6363
@@ -70,8 +70,7 @@ DPS instances that are configured to accept only TLS 1.2 will also enforce the u
7070
| :--- |
7171
| `TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384`<br>`TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`<br>`TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384`<br>`TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256` |
7272

73-
74-
### Legacy cipher suites
73+
### Legacy cipher suites
7574

7675
These cipher suites are currently still supported by DPS but will be depreciated. Use the recommended cipher suites above if possible.
7776

@@ -83,6 +82,9 @@ These cipher suites are currently still supported by DPS but will be depreciated
8382
| :--- |
8483
| `TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1)`<br>`TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1)`<br>`TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy)`<br>`TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy)`<br>`TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy)`<br>`TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy)`<br>`TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)`<br>`TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)` |
8584

85+
## Mutual TLS support
86+
87+
When DPS enrollments are configured for X.509 authentication, mutual TLS (mTLS) is supported by DPS.
8688

8789
## Use TLS 1.2 in the IoT SDKs
8890

0 commit comments

Comments
 (0)