Secure CockroachDB with Custom Common Name
CockroachDB out of the box comes with ability to generate certificates with
cockroach cert
command. This command will provision certs for client and nodes. One common gap we get from our customers is the explicit reliance on CN=node
and CN=root
. In our latest development release, we're introducing ability to map root and node principals to custom CNs. The process bypasses cockroach cert
command in favor of openssl
utility. It is very well documented and I recorded a live walk-through of the entire process.
I am including my openssl configuration files for convenience:
ca.cnf
# OpenSSL CA configuration file
[ ca ]
default_ca = CA_default
[ CA_default ]
default_days = 365
database = index.txt
serial = serial.txt
default_md = sha256
copy_extensions = copy
unique_subject = no
# Used to create the CA certificate.
[ req ]
prompt=no
distinguished_name = distinguished_name
x509_extensions = extensions
[ distinguished_name ]
organizationName = Example Inc
commonName = Example Inc CA
[ extensions ]
keyUsage = critical,digitalSignature,nonRepudiation,keyEncipherment,keyCertSign
basicConstraints = critical,CA:true,pathlen:1
# Common policy for nodes and users.
[ signing_policy ]
organizationName = supplied
commonName = optional
# Used to sign node certificates.
[ signing_node_req ]
keyUsage = critical,digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth,clientAuth
# Used to sign client certificates.
[ signing_client_req ]
keyUsage = critical,digitalSignature,keyEncipherment
extendedKeyUsage = clientAuth
node.cnf
# OpenSSL node configuration file
[ req ]
prompt=no
distinguished_name = distinguished_name
req_extensions = extensions
[ distinguished_name ]
organizationName = Example Inc
[ extensions ]
subjectAltName = critical,DNS:localhost,DNS:node.example.com,IP:0.0.0.0
client.cnf for root
[ req ]
prompt=no
distinguished_name = distinguished_name
req_extensions = extensions
[ distinguished_name ]
organizationName = Example Inc
commonName = john
[ extensions ]
subjectAltName = email:john.smith@example.com,DNS:user.example.com,DNS:root
client.cnf for additional users
[ req ]
prompt=no
distinguished_name = distinguished_name
req_extensions = extensions
[ distinguished_name ]
organizationName = Example Inc
commonName = user2@example.com
[ extensions ]
subjectAltName = email:user2@example.com,DNS:user2.example.com,DNS:user2
Comments