Skip to content

Commit 8b017f0

Browse files
authored
Merge pull request #366 from smallstep/carl/acme-caveat
Add note about device identity
2 parents eabba77 + 139f4a4 commit 8b017f0

File tree

1 file changed

+22
-17
lines changed

1 file changed

+22
-17
lines changed

step-ca/provisioners.mdx

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -927,11 +927,9 @@ see the [claims](configuration.mdx#claims) section for all the options.
927927
The [ACME Protocol](https://tools.ietf.org/html/rfc8555) can authenticate Certificate Signing Requests (CSRs) in a way that enables automation.
928928

929929
ACME clients must answer challenges presented by the ACME server to prove to the CA that they control the identifiers listed in the CSR.
930-
ACME supports four different types of challenges: `http-01`, `dns-01`, `tls-alpn-01`, and `device-attest-01`. These are designed for operability in different environments.
930+
ACME supports four different types of challenges: `http-01`, `dns-01`, `tls-alpn-01` for server certificates, and `device-attest-01` for device certificates. These are designed for operability in different environments.
931931
See [ACME Basics](./acme-basics.mdx#acme-challenges) for a description of each challenge type and their tradeoffs.
932932

933-
In a typical setup, an ACME server might issue server certificates via the `http-01`, `dns-01`, `tls-alpn-01` challenge types, and client certificates via the `device-attest-01` challenge type.
934-
935933
The ACME provisioner in `step-ca` supports issuing X.509 certificates using IP, hostname, and device identifiers.
936934

937935
#### Example
@@ -1015,12 +1013,25 @@ for more guidance on configuring and using the ACME protocol with `step-ca`.
10151013

10161014
#### ACME for Device Attestation
10171015

1018-
The `device-attest-01` challenge supports device attestations from iOS, iPadOS, tvOS, and YubiKeys.
1019-
An attestation certificate is used
1020-
to satisfy the ACME challenge.
1021-
The CSR may include
1022-
a device ID in a `permanentIdentifier` SAN ([RFC 4043](https://www.rfc-editor.org/rfc/rfc4043.html)),
1023-
depending on the application.
1016+
##### 🚧 Read before digging
1017+
1018+
`step-ca` is focused on being a great CA for protecting cloud resources and DevOps workloads.
1019+
It is not a complete solution for device identity.
1020+
Its ACME Device Attestation support
1021+
is a reference implementation of [the `device-attest-01` RFC](https://datatracker.ietf.org/doc/draft-acme-device-attest/).
1022+
For a complete device identity solution, you will need a lot more:
1023+
a complete device inventory,
1024+
a production solution for dynamic SCEP,
1025+
a TPM Attestation CA,
1026+
cross-platform ACME Device Attestation clients,
1027+
OCSP,
1028+
logging,
1029+
high availability,
1030+
and so on.
1031+
You should [talk to our sales team](https://go.smallstep.com/request-demo) before building all of that.
1032+
We offer an off-the-shelf,
1033+
comprehensive device identity solution
1034+
to ensure that only corporate owned devices can access sensitive infrastructure and resources.
10241035

10251036
This challenge type is not enabled by default and must be explicitly enabled.
10261037

@@ -1035,8 +1046,8 @@ The variations are specified in
10351046
`step-ca` supports device attestation statements
10361047
in `tpm`, `apple`, and `step` formats.
10371048

1038-
* The `tpm` format is a variant of the [WebAuthn TPM Attestation statement](https://www.w3.org/TR/webauthn-2/#sctn-tpm-attestation). By default, it does not add trust for any CAs. You must add the trust roots of an attestation authority, via the `attestationRoots` configuration.
1039-
* The `apple` format is a variant of [WebAuthn Apple Anonymous Attestation](https://www.w3.org/TR/webauthn-2/#sctn-apple-anonymous-attestation) format. It is compatible with Apple's <a href="https://support.apple.com/guide/deployment/managed-device-attestation-dep28afbde6a/web">Managed Device Attestation (MDA)</a> and other secure zero-touch provisioning (SZTP) applications as part of your device management (MDM) strategy. By default, it adds trust for [Apple's Enterprise CA](https://www.apple.com/certificateauthority/private/).
1049+
* The `tpm` format is a variant of the [WebAuthn TPM Attestation statement](https://www.w3.org/TR/webauthn-2/#sctn-tpm-attestation). By default, it does not add trust for any CAs. You must add the trust roots of an attestation CA, via the `attestationRoots` configuration.
1050+
* The `apple` format is a variant of [WebAuthn Apple Anonymous Attestation](https://www.w3.org/TR/webauthn-2/#sctn-apple-anonymous-attestation) format, compatible with Apple's <a href="https://support.apple.com/guide/deployment/managed-device-attestation-dep28afbde6a/web">Managed Device Attestation (MDA)</a>. By default, it adds trust for [Apple's Enterprise CA](https://www.apple.com/certificateauthority/private/).
10401051
* The `step` format is a variant of [WebAuthn `packed` attestation format](https://www.w3.org/TR/webauthn-2/#sctn-packed-attestation). It is designed for non-TPM devices that can issue attestation certificates, such as YubiKey PIV. It adds trust for [Yubico's root CA](https://developers.yubico.com/PIV/Introduction/PIV_attestation.html).
10411052

10421053
<Alert severity="warning">
@@ -1068,7 +1079,6 @@ step ca provisioner add acme-da \
10681079
<Alert severity="warning">
10691080
<div>
10701081
☠️ Apple's device attestation CA will be trusted by the provisioner.
1071-
For a production environment, you must add policies to restrict this provisioner.
10721082
Without policy restrictions, the provisioner may issue certificates **for any Apple device**.
10731083
</div>
10741084
</Alert>
@@ -1092,7 +1102,6 @@ step ca provisioner add acme-da \
10921102
<Alert severity="warning">
10931103
<div>
10941104
☠️ Yubico's attestation CA will be trusted by the new provisioner.
1095-
For a production environment, you must add policies to restrict this provisioner.
10961105
Without policy restrictions, the provisioner may issue certificates **for any YubiKey**.
10971106
</div>
10981107
</Alert>
@@ -1131,7 +1140,6 @@ an end-to-end TPM-bound client certificate flow is not available at this time.
11311140
A device needs to provide an attestation certificate in its response to an ACME `device-attest-01` challenge.
11321141
Apple has an online attestation authority service for this.
11331142
Yubico offers attestation certificates on their devices.
1134-
11351143
But we have not seen a public or open source attestation authority that can issue attestation certificates for TPMs.
11361144
TPMs also have privacy constraints and a wide range of use case-specific validation requirements that complexify attestation flows.
11371145

@@ -1144,9 +1152,6 @@ TPMs also have privacy constraints and a wide range of use case-specific validat
11441152
</div>
11451153
</Alert>
11461154

1147-
For a description of how a TPM-based attestation flow might work, if implemented,
1148-
see [TPMs + ACME: Better Together](https://smallstep.com/blog/managed-device-attestation/#tpms--acme-better-together)
1149-
11501155
#### ACME for Wire messenger clients
11511156

11521157
<Alert severity="warning">

0 commit comments

Comments
 (0)