Preparing for Transport Layer Security (TLS)
Warning: Pivotal Cloud Cache v1.7 is no longer supported because it has reached the End of General Support (EOGS) phase as defined by the Support Lifecycle Policy. To stay up to date with the latest software and security updates, upgrade to a supported version.
This topic describes how to provide an existing Certificate Authority (CA) certificate to BOSH CredHub and how to generate a new CA certificate with BOSH CredHub, if you do not already have one.
WARNING: This procedure involves restarting all of the VMs in an existing PCF deployment in order to propagate a CA certificate. The operation can take a long time to complete.
Overview
Enabling TLS provisions PCC service instances with a certificate, so that apps, gfsh, and Pulse can establish encrypted connections with the PCC service instance.
The certificate deployed on the PCC service instance is a server certificate. The server certificate is generated by CredHub, a component designed for centralized credential management in PCF. CredHub is deployed on the same VM as the BOSH Director.
CredHub generates the server certificate using a Certificate Authority (CA) certificate. The CA certificate must be provided to CredHub by the operator or generated by CredHub.
Apps use the CA certificate to authenticate components of PCC service instances. Apps that communicate with PCC must have access to the CA certificate in order to validate that the server certificate can be trusted.
WARNING: An operator must rotate the CA certificate if it expires or if it becomes compromised. To rotate your CA certificate, see Managing Certificates. Do not attempt to rotate a CA certificate on your own. Contact Pivotal Support and perform the procedure with their assistance.
Provide or Generate a CA Certificate
TLS authorization requires a credential generated by CredHub. You do not need to create a new User
Account and Authentication (UAA) client for CredHub specifically to support TLS, as long as a UAA
Client exists with credhub.write
and credhub.read
permissions. The client used in this section is one that
was created during the OpsManager installation process: the ops_manager
client.
Add the CA Certificate
Perform the following steps to log in to CredHub, provide or generate a CA certificate, and add the certificate to Ops Manager:
From the Ops Manager VM, set the API target of the CredHub CLI to your CredHub server.
Run the following command:credhub api https://BOSH-DIRECTOR:8844 --ca-cert=/var/tempest/workspaces/default/root_ca_certificate
whereBOSH-DIRECTOR
is the IP address of the BOSH Director VM.
For example:$ credhub api https://10.0.0.5:8844 --ca-cert=/var/tempest/workspaces/default/root_ca_certificate
Log in to CredHub.
Run the following command:credhub login --client-name=CLIENT-NAME --client-secret=CLIENT-SECRET
whereCLIENT-NAME
is the client name, usuallyops_manager
or a CredHub-specific UAA client of your own creation, andCLIENT-SECRET
is the client secret which can be found under the Credentials tab of the OpsManager tile with the nameBosh Commandline Credentials
.
For example:$ credhub login \ --client-name=ops_manager \ --client-secret=abcdefghijklm123456789
Use the CredHub CLI to check whether a services CA certificate already is present.
- Enter the following command:
$ credhub get \ --name="/services/tls_ca"
- If you already have a certificate at the
services/tls_ca
path, skip to step 5.
- Enter the following command:
Use the CredHub CLI to generate a CA certificate or provide an existing one.
Note: Your PCF deployment may have multiple CA certificates. Pivotal recommends a dedicated CA certificate for services.
- If you do not have a CA certificate, use the CredHub CLI to generate one.
Enter the following command:
$ credhub generate \ --name="/services/tls_ca" \ --type="certificate" \ --no-overwrite \ --is-ca \ --common-name="rootCA"
- If you have an existing CA certificate that you want to use, create a new file called
root.pem
with the contents of the certificate. Then enter the following command, specifying the path toroot.pem
and the private key for the certificate:$ credhub set \ --name="/services/tls_ca" \ --type="certificate" \ --certificate=./root.pem \ --private=ERKSOSMFF...
- If you do not have a CA certificate, use the CredHub CLI to generate one.
Enter the following command:
Use the BOSH CLI v2 to extract the
certificate
portion from the CA certificate and print it. Enter the following command:$ bosh2 interpolate <(credhub get --name=/services/tls_ca) \ --path=/value/certificate
Record the output of the
bosh2 interpolate
command from step 5.Navigate to the Ops Manager Installation Dashboard and select the Ops Manager Director tile. Click Security.
Paste the contents of the CA certificate into Trusted Certificates. Append to existing Trusted Certificates, if there are already certificates listed. Click Save.
The CA certificate must also be added for the Gorouter. Navigate to the PAS Settings tab. Click on Networking. Add the CA certificate to the box labeled Certificate Authorities Trusted by Router and HAProxy and click Save.
Click Review Pending Changes (see Reviewing Pending Product Changes).
Click Apply Changes.