For new deployments

May 3, 2017 ยท View on GitHub

Components communicating with CC via its internal API (for example: Loggregator, BBS, and TPS) will do so over mutual TLS. This is part of an effort to have all Cloud Foundry internal traffic be done over mutual TLS in lieu of basic auth. The CC and other components must now be configured with several new certificates to establish these mTLS connections. For most deployments, use a shared CA between CF and Diego deployments.

For new deployments

Generating the shared CA certificate and CC Server certificate

Please run cf-release/scripts/generate-cf-diego-certs. This script will create a directory called cf-diego-certs. Within this directory will be a CA, to be shared between your cf-release and diego-release deployments.

Contents of fileDeploymentProperty
cf-release/cf-diego-certs/cf-diego-ca.crtCFproperties.cc.mutual_tls.ca_cert
cf-release/cf-diego-certs/cf-diego-ca.crtDiegoproperties.capi.tps.cc.ca_cert
cf-release/cf-diego-certs/cf-diego-ca.crtDiegoproperties.capi.cc_uploader.cc.ca_cert
cf-release/cf-diego-certs/cf-diego-ca.crtDiegoproperties.capi.cc_uploader.mutual_tls.ca_cert
cf-release/cf-diego-certs/cf-diego-ca.crtDiegoproperties.tls.ca_cert
cf-release/cf-diego-certs/cloud-controller.crtCFproperties.cc.mutual_tls.public_cert
cf-release/cf-diego-certs/cloud-controller.keyCFproperties.cc.mutual_tls.private_key

Generating Diego client certificates

Please run diego-release/scripts/generate-diego-certs. For example, if you ran cf-release/scripts/generate-cf-diego-certs as per the step above, you would now run scripts/generate-diego-certs cf-diego-ca /path/to/cf-release/cf-diego-certs.

Contents of fileDeploymentProperty
diego-release/diego-certs/tps-certs/client.crtDiegoproperties.capi.tps.cc.client_cert
diego-release/diego-certs/tps-certs/client.keyDiegoproperties.capi.tps.cc.client_key
diego-release/diego-certs/cc-uploader-certs/client.keyDiegoproperties.capi.cc_uploader.cc.client_key
diego-release/diego-certs/cc-uploader-certs/client.keyDiegoproperties.capi.cc_uploader.cc.client_key

For an existing deployment

Shared CA certificate

We will use the CA cert configured for Diego's deployment to populate properties.cc.mutual_tls.ca_cert, properties.capi.tps.cc.ca_cert, and properties.capi.cc_uploader.cc.ca_cert.

Generating the Cloud Controller Server certificate

Given an existing CA, with the .crt and .key files found in /path/to/CA, we can generate a signing request and sign it with that CA

$ certstrap --depot-path /path/to/CA request-cert --passphrase '' --common-name cloud-controller-ng.service.cf.internal
$ certstrap --depot-path /path/to/CA sign cloud-controller-ng.service.cf.internal --CA <CA NAME>
Contents of fileDeploymentProperty
/path/to/CA/cloud-controller-ng.service.cf.internal.crtCFproperties.cc.mutual_tls.public_cert
/path/to/CA/cloud-controller-ng.service.cf.internal.keyCFproperties.cc.mutual_tls.private_key

Generating the TPS client certificate

Please run diego-release/scripts/generate-tps-certs, this will guide you on how to generate the values below. Use the same CA as for the steps above.

Contents of fileDeploymentProperty
diego-release/diego-certs/tps-certs/client.crtDiegoproperties.capi.tps.cc.client_cert
diego-release/diego-certs/tps-certs/client.keyDiegoproperties.capi.tps.cc.client_key.

Generating the CC-Uploader certificates

Please run diego-release/scripts/generate-cc-uploader-certs and diego-release/scripts/generate-rep-certs, this will guide you on how to generate the values below. Use the same CA as for the steps above.

This script will generate two sets of certificates:

  1. Generates client certificates for enabling mTLS communication from the CC Uploader to CC
  2. Enabling mTLS communication from Diego to CC Uploader
Contents of fileDeploymentProperty
diego-release/diego-certs/cc-uploader-certs/cc/client.crtDiegoproperties.capi.cc_uploader.cc.client_cert
diego-release/diego-certs/cc-uploader-certs/cc/client.keyDiegoproperties.capi.cc_uploader.cc.client_key
diego-release/diego-certs/cc-uploader-certs/server.crtDiegoproperties.capi.cc_uploader.mutual_tls.server_cert
diego-release/diego-certs/cc-uploader-certs/server.keyDiegoproperties.capi.cc_uploader.mutual_tls.server_key
diego-release/diego-certs/rep-certs/client.crtDiegoproperties.tls.cert
diego-release/diego-certs/rep-certs/client.keyDiegoproperties.tls.key

If you run into trouble, please feel free to reach out to us on slack.