pki
Defines the path of each file required for a Nebula host: CA certificate, host certificate, and host key. Each of these files can also be stored inline as YAML multiline strings.
pki: ca: /etc/nebula/ca.crt cert: /etc/nebula/host.crt key: /etc/nebula/host.key blocklist: - c99d4e650533b92061b09918e838a5a0a6aaee21eed1d12fd937682865936c72pki.ca
Section titled “pki.ca”The ca is a collection of one or more certificate authorities this host should trust. In the above example,
/etc/nebula/ca.crt contains PEM-encoded data for each CA we should trust, concatenated into a single file. The
following example shows a CA cert inlined as a YAML multiline string.
pki: ca: | -----BEGIN NEBULA CERTIFICATE----- CkgKFlRoZSBPbmUtSG91ciBOZWJ1bGEgQ0Eo/pL7jAYwjq/7jAY6IDIi7yqkRV9F 1+tozxvnHCmuuuwdArt7YbMMdCR4AYm/QAESQHBitbcetbJ06RQckqGi+hXJXd/U TXKEul4TxP4Qxmd7g+cHDE6oYZhRwup+1xg/Sv9bMg2E2/LNXKV3rNf1Yw8= -----END NEBULA CERTIFICATE-----pki.cert
Section titled “pki.cert”The cert is a certificate unique to every host on a Nebula network. The certificate identifies a host’s IP address,
name, and group membership within a Nebula network. The certificate is signed by a certificate authority when created,
which informs other hosts on whether to trust a particular host certificate.
pki.key
Section titled “pki.key”The key is a private key unique to every host on a Nebula network. It is used in conjunction with the host certificate
to prove a host’s identity to other members of the Nebula network. The private key should never be shared with other
hosts.
PKCS11 support
Section titled “PKCS11 support”It is possible to use a PKCS11 URL as a reference to your private key, like in this example:
pki: key: 'pkcs11:id=1234;object=nebula%20key?module-path=/usr/lib64/pkcs11/my-module.so&pin-source=/path/to/pin-file' # or, you can specify the pin directly # key: "pkcs11:id=1234;object=nebula%20key?module-path=/usr/lib64/pkcs11/my-module.so&pin-value=1234"In order to use PKCS11 with Nebula, a few pre-requisites must be met.
nebulamust be built from source, with thecgoandpkcs11tags.make bin-pkcs11will accomplish this for you.- Today, only P256 is supported with PKCS11. You cannot use Nebula's default Curve25519.
- Your key must be able to be uniquely identified via the
idandobjectparameters of the PKCS11 URL. - Your key's
CKA_DERIVEattribute must beCK_TRUE - Derivations must be possible via the
CKM_ECDH1_DERIVEmechanism - Your HSM must permit the output of the derivation to be extracted (
CKA_EXTRACTABLE == CK_TRUE). Nebula is not capable of using the HSM for symmetric cryptography, and we do not plan to add support for this.
pki.blocklist
Section titled “pki.blocklist”The blocklist contains a list of individual hosts' certificate fingerprints which should be blocked even if the
certificate is otherwise valid (signed by a trusted CA and unexpired.) This should be used if a host's credentials are
stolen or compromised.
pki.disconnect_invalid
Section titled “pki.disconnect_invalid”disconnect_invalid is a toggle to force a client to be disconnected if the certificate is expired or invalid.
pki.initiating_version
Section titled “pki.initiating_version”pki.initiating_version determines which nebula cert version to use when initiating new connections. This setting only
applies if both a v1 and a v2 certificate are configured, in which case it will default to 1. Once all hosts in the
mesh are configured with both a v1 and v2 certificate then this will default to 2. After all hosts in the mesh are
using a v2 certificate then v1 certificates are no longer needed.
In most instances this config option should not be needed, as Nebula will automatically select the correct certificate version to use.