- By default, the `X5C` provisioner will issue a certificates for
any Subject names.
- If you want to limit or modify the subject names this provisioner will issue,
+ By default, the `X5C` provisioner will issue certificates for
any Subject names.
+ If you wish to restrict or modify the subject names that this provisioner can issue,
you can use a
certificate template.
For example, say your users will use the X5C provisioner to exchange an X.509 client certificate for an SSH user certificate.
@@ -766,25 +821,35 @@ see the [claims](configuration.mdx#claims) section for all the options.
**This is an experimental feature.**
-If you have a [Nebula overlay network](https://nebula.defined.net/docs/), you can create a Nebula provisioner and configure it with your Nebula root CA certificate.
-Clients can then use their Nebula client certificate and private key to request an X.509 or SSH host certificate from `step-ca`.
-The Nebula certificate they use for authentication must be issued by the Nebula root CA configured in the provisioner.
+If you have a [Nebula overlay network](https://nebula.defined.net/docs/),
+you can create a Nebula provisioner,
+and configure it with your Nebula root CA certificate.
+Clients can then use their Nebula client certificate
+and private key to request an X.509 or SSH host certificate from `step-ca`.
+However, the Nebula certificate used for authentication
+must be issued by the Nebula root CA that is configured in the provisioner.
-The Nebula client certificate is used for authorization, too:
-The client is allowed to request an X.509 or SSH host certificate with the `name` or any of the `ips` appearing on the Nebula client certificate.
+The Nebula client certificate can be used for authorization too.
+The client is allowed to request an X.509 or SSH host certificate
+with the `name` or any of the `ips` appearing on the Nebula client certificate.
To be clear, Nebula certificates can contain a single `name` and a list of `ips`.
The `name` field is often a DNS hostname, but it could be an email, IP, or URI.
And `ips` contains a list of CIDR blocks.
-In `step-ca`, the Nebula provisioner will authorize certificate subjects or SANs that include the `name`, plus IPs in any of the CIDR blocks in `ips` on the Nebula certificate.
-To get started, create a Nebula provisioner:
+In `step-ca`, the Nebula provisioner will authorize certificate subjects or SANs
+that include the `name`, plus IPs in any of the CIDR blocks in `ips` on the Nebula certificate.
+
+#### Create a Nebula Provisioner
+To create a Nebula provisioner, run:
```shell
step ca provisioner add --type Nebula --nebula-root /etc/nebula/ca.crt
```
-Now you can get an X509 certificate with the Nebula provisioner, using a Nebula client certificate. Here's an example using the DNS name `host3.example.com`, and two IPs:
+Now you can get an X509 certificate with the Nebula provisioner,
+using a Nebula client certificate.
+Here's an example using the DNS name `host3.example.com`, and two IPs:
```shell
step ca certificate host3.example.com host3.crt host3.key \
@@ -797,8 +862,8 @@ step ca certificate host3.example.com host3.crt host3.key \
### SSHPOP - SSH Certificate
An SSHPOP provisioner allows a client to renew, revoke, or rekey an SSH
-certificate using that certificate for authentication with the CA.
-The renew and rekey methods can only be used on SSH host certificates.
+certificate using same SSH certificate for authentication with the CA.
+However, the renew and rekey operations are limited to SSH host certificates only.
An SSHPOP provisioner is configured with the user and host root ssh certificates
from the `ca.json`. The SSHPOP provisioner can only authenticate SSHPOP tokens
@@ -807,18 +872,18 @@ generated using SSH certificates created by `step-ca`.
An SSHPOP token is a JWT, signed by the certificate private key, with an `sshpop`
header that contains the SSH certificate.
-When configured with the `--ssh` option (`step ca init --ssh`), the CA
-will contain a default SSHPOP provisioner named `sshpop`.
+When configured with the `--ssh` option (i.e, `step ca init --ssh`),
+the CA will contain a default SSHPOP provisioner named `sshpop`.
-#### Example
+#### Create an SSHPOP provisioner:
-Add an SSHPOP provisioner:
+To create an SSHPOP provisioner, run:
```shell
step ca provisioner add sshpop --type SSHPOP
```
-An example SSHPOP provisioner in the `ca.json`:
+Here's an example SSHPOP provisioner in `ca.json`:
```json
...
@@ -835,6 +900,7 @@ An example SSHPOP provisioner in the `ca.json`:
}
}
```
+And, here's what each property stands for:
* **type**: indicates the provisioner type and must be `SSHPOP`.
@@ -850,19 +916,25 @@ see the [claims](configuration.mdx#claims) section for all the options.
### ACME
-The [ACME Protocol](https://tools.ietf.org/html/rfc8555) can authenticate Certificate Signing Requests (CSRs) in a way that enables automation.
+The [ACME Protocol](https://tools.ietf.org/html/rfc8555) can authenticate Certificate Signing Requests (CSRs)
+in a way that enables automation.
+
+ACME clients must answer challenges presented by the ACME server
+to prove to the CA that they control the identifiers listed in the CSR.
+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.
-ACME clients must answer challenges presented by the ACME server to prove to the CA that they control the identifiers listed in the CSR.
-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.
See [ACME Basics](./acme-basics.mdx#acme-challenges) for a description of each challenge type and their tradeoffs.
-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.
+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.
The ACME provisioner in `step-ca` supports issuing X.509 certificates using IP, hostname, and device identifiers.
-#### Example
+#### Create an ACME provisioner
-Add an ACME provisioner:
+To add an ACME provisioner:
```shell
step ca provisioner add acme --type ACME
@@ -902,6 +974,8 @@ An example of an ACME provisioner in the `ca.json`:
}
```
+And, here's what each property stands for:
+
* **type**: indicates the provisioner type and must be `ACME`.
* **name**: a string used to identify the provider when the CLI is
@@ -941,7 +1015,10 @@ for more guidance on configuring and using the ACME protocol with `step-ca`.