Couper Documentation

edge

Client Certificate

Block nameContextLabel
client_certificatetls Blockoptional

Define an optional client_certificate block with its optional label to enable mTLS.

mTLS: stands for mutual TLS and will extend the normal handshake process with an additional request (client must present the certificate) and verification for the configured client certificate (CA).

Configuring a ca_certificate is the standard way to specify a client certificate. But you can also provide the leaf_certificate which effectively is the client certificate. The server will verify the given client certificate byte by byte against its own leaf certificate. A combination of ca_certificate(or ca_certificate_file) or/and leaf_certificate(or leaf_certificate_file) is valid. This covers the use-case where the CA has signed multiple client certificates and you want to limit the access to specific ones.

Example

client_certificate "IOT" {
  ca_certificate = "base64_der" # PEM or DER encoded
  # OR
  ca_certificate_file = "couperIntermediate.crt" # PEM

  # OR/AND
  # trusted client leaf cert

  leaf_certificate = "base64_der"
  # OR
  leaf_certificate_file = "couperClient.crt" # PEM
}

Attributes

NameTypeDefaultDescription
ca_certificate
string
-

Public part of the certificate authority in DER or PEM format. Mutually exclusive with ca_certificate_file.

ca_certificate_file
string
-

Reference to a file containing the public part of the certificate authority file in DER or PEM format. Mutually exclusive with ca_certificate.

leaf_certificate
string
-

Public part of the client certificate in DER or PEM format. Mutually exclusive with leaf_certificate_file.

leaf_certificate_file
string
-

Reference to a file containing the public part of the client certificate file in DER or PEM format. Mutually exclusive with leaf_certificate.