Manage TLS encryption and certificates
Configure and manage TLS encryption and certificates to protect data in transit and ensure that your environment complies with your organization’s security policies.
In RHOSO 18.0, TLS everywhere (TLS-e) cannot be disabled after it is enabled. Certificate lifecycle management is handled by the cert-manager Operator, which replaces FreeIPA, certmonger, and tripleo-ipa from Red Hat OpenStack Platform (RHOSP) 17.1. In RHOSO 18.0, there is no undercloud, no novajoin, or no IdM integration to configure. Certificates are issued, renewed, and rotated automatically.
TLS default configuration and custom certificates Copy linkLink copied!
When you deploy your cloud environment, most API connections are protected by TLS by default. You can customize these settings to apply trusted certificates from your own internal certificate authority (CA) to comply with your organization’s security requirements.
You might be required to protect public APIs by using your own internal certificate authority(CA). To replace the automatically generated certificates you must create a secret that contains your additional CA certs, including all certificates in needed chains of trust.
You can apply trusted certificates from your own internal CA to public interfaces on RHOSO. The public interface is where ingress traffic meets the service’s route. Do not attempt to manage encryption on internal pod-level interfaces.
If you decide to apply trusted certificates from your own internal CA, you will need the following information:
- DNS names
-
For each service you apply your own custom certificate to, you will need its DNS hostname for the process of generating the certificate. You can get a list of public hostnames by using the command:
oc get -n openstack routes.Note To use a single certificate for two or more services, use a wildcard in the DNS name field, or list multiple DNS names in the subject alt names field. If you do not use a wildcard, then you must update the certificate if a route hostname changes. - Duration
- To update a service’s certificate in OpenShift, the service must be restarted. The duration for the certificate is the longest amount of time a service can stay live without being restarted, subject to your internal security policies.
- Usages
- You must include -
key encipherment,digital signature, andserver authwithin the list of usages in your certificate.
Updating TLS to use custom certificates requires edits to both the control plane and the data plane.
The following are the default TLS settings that are used if not annotated and changed:
apiVersion: core.openstack.org/v1beta1
kind: OpenStackControlPlane
metadata:
name: myctlplane
spec:
tls:
ingress:
ca:
duration: 87600h
cert:
duration: 43800h
enabled: true
podLevel:
enabled: true
internal:
ca:
duration: 87600h
cert:
duration: 43800h
libvirt:
ca:
duration: 87600h
cert:
duration: 43800h
ovn:
ca:
duration: 87600h
cert:
duration: 43800h
TLS certificate layers and trust chains Copy linkLink copied!
Your deployment encrypts traffic at multiple layers. Each layer has its own certificate authority (CA) and certificate chain, all managed by cert-manager.
- Ingress TLS (public endpoints)
- Public API endpoints are exposed as Red Hat OpenShift Container Platform (RHOCP) Routes. TLS terminates at the HAProxy-based RHOCP Ingress Controller, which re-encrypts traffic to the service pod. The ingress CA and certificates are stored in the
rootca-publicSecret in theopenstacknamespace. - Pod-level TLS (internal endpoints)
- Internal communication between services is encrypted at the pod level. Each OpenStack service pod receives its own TLS certificate from cert-manager. This covers service-to-service calls, such as nova-api to keystone or neutron to nova, that traverse the InternalAPI network over MetalLB LoadBalancer Services. The internal CA is stored in the
rootca-internalSecret. - Service-specific TLS
-
RHOSO 18.0 issues separate certificate chains for specific infrastructure services that have distinct trust requirements:
- libvirt certificates for live migration traffic between compute nodes.
- OVN certificates for OVN Southbound and Northbound database connections.
Each of these has its own CA duration and certificate duration configured independently in the
OpenStackControlPlaneCR. - Data plane TLS
- You can also configure data plane nodes, such as RHEL compute hosts, with TLS. Set
tlsEnabled: truein theOpenStackDataPlaneNodeSetCR. When enabled, cert-manager provisions certificates for services that run on data plane nodes, and the EDPM Ansible deployment distributes the CA trust bundle to each node.
Create a custom cert-manager issuer Copy linkLink copied!
Create a custom cert-manager issuer so that TLS certificates for your ingress or internal endpoints comply with your organization’s security policies or integrate with your existing PKI infrastructure.
About this task Copy linkLink copied!
To manage your own certificates for internal endpoints, you must create a custom internal issuer. TLS-e uses the following issuers by default:
- rootca-internal
- rootca-libvirt
- rootca-ovn
- rootca-public
Procedure Copy linkLink copied!
Add custom CA certificates to the control plane Copy linkLink copied!
Add custom certificate authority (CA) certificates to the control plane so that OpenStack services can validate certificates from your internal CA or third-party providers.
About this task Copy linkLink copied!
To validate custom CA certificates on your control plane, you must add your custom CA certificate into a bundle that includes all certificates that OpenStack services can verify against.
Procedure Copy linkLink copied!
Apply custom certificates to public service endpoints Copy linkLink copied!
Apply signed certificates from your own certificate authority (CA) to public service endpoints to replace automatically generated route certificates and meet your organization’s security requirements.
Before you begin Copy linkLink copied!
- You have a list of each of the public services for which to apply your custom service certificates. You can get this list using the
oc route list -n openstackcommand. Use this information for the number of certificates you must create, the DNS names for those certificates, and finding the relevant services to edit in theopenstack_control_plane.yamlcustom resource (CR). - You have a service certificate for the public services.
Procedure Copy linkLink copied!
Update the control plane with a single custom certificate Copy linkLink copied!
Apply a single shared certificate from your own certificate authority (CA) to all public service endpoints to simplify certificate management and replace the automatically generated route certificates.
Before you begin Copy linkLink copied!
- You have a list of each of the public services for which to apply your custom service certificate. You can get this list by using the
oc route list -n openstackcommand. Use this information for the DNS names for the certificate, and for finding the relevant services to edit in theopenstack_control_plane.yamlcustom resource (CR).
Procedure Copy linkLink copied!
Use your CA certificates on remote clients Copy linkLink copied!
Configure remote clients to trust the certificate authority (CA) used by your deployment so that OpenStack CLI commands authenticate securely without SSL verification errors.
Before you begin Copy linkLink copied!
- You have deployed RHOSO with default certificates, or have used custom certificates that are not signed by a public certificate authority.
Procedure Copy linkLink copied!
Private key algorithm and size Copy linkLink copied!
In Red Hat OpenStack Platform (RHOSP) 17.1, the CertificateKeySize heat parameter controlled private key sizes in your deployment. You can configure the key algorithm and size cert-manager Certificate resource.
When creating custom Issuers, you specify the private key parameters in the Certificate CR:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: rootca-ingress-custom
spec:
isCA: true
commonName: rootca-ingress-custom
duration: 87600h0m0s
privateKey:
algorithm: RSA
size: 3072
issuerRef:
name: selfsigned-issuer
kind: Issuer
secretName: rootca-ingress-custom
The following table outlines the supported algorithms and valid sizes:
| Algorithm | Valid key sizes | Default |
|---|---|---|
|
RSA |
2048, 3072, 4096, 8192 |
2048 (NIST minimum) |
|
ECDSA |
256 (P-256), 384 (P-384), 521 (P-521) |
256 |
|
Ed25519 |
Fixed with no size parameter |
N/A |
CAs for public endpoints Copy linkLink copied!
If your OpenStack API endpoints are accessible from the public internet, use certificates signed by a publicly trusted certificate authority (CA) such as Let’s Encrypt, DigiCert, or your enterprise PKI that chains to a public root.
cert-manager supports ACME Issuers for automated certificate provisioning from Let’s Encrypt or compatible providers.
For internal-only clouds such as private data centers, a self-signed or internal CA is sufficient, when you distribute the CA certificate to all clients.
Verify TLS on public and internal endpoints Copy linkLink copied!
In Red Hat OpenStack Platform (RHOSP) 17.1, you used the cipherscan tool to scan HAProxy endpoints. You do not manage HAProxy. Use standard TLS inspection tools against the Red Hat OpenShift Container Platform (RHOCP) Route endpoints.
Procedure Copy linkLink copied!
Memcached TLS Copy linkLink copied!
memcached runs as a pod in the openstack namespace, and pod-level TLS covers memcached connections automatically if you set podLevel.enabled: true in the TLS configuration.
RHOSP 17.1 to RHOSO 18.0 TLS comparison Copy linkLink copied!
Review the TLS differences between Red Hat OpenStack Platform (RHOSP) 17.1 and Red Hat OpenStack Services on OpenShift (RHOSO) 18.0.
| RHOSP 17.1 mechanism | RHOSO 18.0 equivalent | Notes |
|---|---|---|
|
FreeIPA IdM as certificate authority. |
|
No IdM server needed and FreeIPA CA can be imported for adoption. |
|
|
|
No manual |
|
|
OpenStack Operator and |
No Ansible playbooks, and TLS-e is default and mandatory. |
|
|
|
Single configuration field replaces multiple heat environment files. |
|
|
|
Per-certificate control defaults to RSA 3072. |
|
HAProxy |
RHOCP |
Cipher suites and the minimum TLS version is set on the ingress controller. |
|
|
|
Scan the Route endpoint, not a controller node. |
|
|
Automatic on pod-level TLS with no separate configuration. |
|
|
IdM server replacement or replica failover. |
Update Issuer CR and Secret with new CA which the operator reconciles. |
No IPA |
|
|
N/A undercloud is absent. |
All TLS config is in the |