Chapter 15. Enabling SSL/TLS on Internal and Public Endpoints with Identity Management You can enable SSL/TLS on certain overcloud endpoints. Due to the number of certificates required, the director integrates with a Red Hat Identity Management (IdM) server to act as a certificate authority and manage the overcloud certificates. This process involves using novajoin to enroll overcloud nodes to the IdM server. To check the status of TLS support across the OpenStack components, refer to the TLS Enablement status matrix . 15.1. Add the undercloud to the CA Before deploying the overcloud, you must add the undercloud to the Certificate Authority (CA): On the undercloud node, install the python3-novajoin package: On the undercloud node, run the novajoin-ipa-setup script, adjusting the values to suit your deployment: In the following section, you will use the resulting One-Time Password (OTP) to enroll the undercloud. 15.2. Add the undercloud to IdM This procedure registers the undercloud with IdM and configures novajoin. Configure the following settings in undercloud.conf (within the [DEFAULT] section): The novajoin service is disabled by default. To enable it: You need set a One-Time Password (OTP) to register the undercloud node with IdM: Set the overcloud's domain name to be served by neutron's DHCP server: Set the appropriate hostname for the undercloud: Set IdM as the nameserver for the undercloud: For larger environments, you will need to review the novajoin connection timeout values. In undercloud.conf , add a reference to a new file called undercloud-timeout.yaml : Add the following options to undercloud-timeout.yaml . You can specify the timeout value in seconds, for example, 5 : Save the undercloud.conf file. Run the undercloud deployment command to apply the changes to your existing undercloud: 15.3. Configure overcloud DNS For automatic detection of your IdM environment, and easier enrollment, consider using IdM as your DNS server: Connect to your undercloud: Configure the control plane subnet to use IdM as the DNS name server: Set the DnsServers parameter in an environment file to use your IdM server: This parameter is usually defined in a custom network-environment.yaml file. 15.4. Configure overcloud to use novajoin To enable IdM integration, create a copy of the /usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml environment file: Edit the /home/stack/templates/custom-domain.yaml environment file and set the CloudDomain and CloudName* values to suit your deployment. For example: Include the following environment files in the overcloud deployment process: /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml /home/stack/templates/custom-domain.yaml For example: As a result, the deployed overcloud nodes will be automatically enrolled with IdM. This only sets TLS for the internal endpoints. For the external endpoints you can use the normal means of adding TLS with the /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-tls.yaml environment file (which must be modified to add your custom certificate and key). Consequently, your openstack deploy command would be similar to this: Alternatively, you can also use IdM to issue your public certificates. In that case, you need to use the /usr/share/openstack-tripleo-heat-templates/environments/services/haproxy-public-tls-certmonger.yaml environment file. For example: Note You can no longer use novajoin to implement TLS everywhere (TLS-e) on a pre-existing deployment. Use the above procedure only during the initial installation of Red Hat OpenStack Platform.

Commands:
sudo dnf install python3-novajoin
sudo /usr/libexec/novajoin-ipa-setup --principal admin --password <IdM admin password> --server <IdM server hostname> --realm <overcloud cloud domain (in upper case)> --domain <overcloud cloud domain> --hostname <undercloud hostname> --precreate
[DEFAULT] enable_novajoin = true
ipa_otp = <otp>
overcloud_domain_name = <domain>
undercloud_hostname = <undercloud FQDN>
undercloud_nameservers = <IdM IP>
hieradata_override = /home/stack/undercloud-timeout.yaml
nova::api::vendordata_dynamic_connect_timeout: <timeout value> nova::api::vendordata_dynamic_read_timeout: <timeout value>
openstack undercloud install
source ~/stackrc
openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>
parameter_defaults: DnsServers: ["<idm_server_address>"]
cp /usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml /home/stack/templates/custom-domain.yaml
parameter_defaults: CloudDomain: lab.local CloudName: overcloud.lab.local CloudNameInternal: overcloud.internalapi.lab.local CloudNameStorage: overcloud.storage.lab.local CloudNameStorageManagement: overcloud.storagemgmt.lab.local CloudNameCtlplane: overcloud.ctlplane.lab.local
openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml -e /home/stack/templates/custom-domain.yaml \
openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml -e /home/stack/templates/custom-domain.yaml -e /home/stack/templates/enable-tls.yaml
openstack overcloud deploy --templates -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-internal-tls.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-everywhere-endpoints-dns.yaml -e /home/stack/templates/custom-domain.yaml -e /usr/share/openstack-tripleo-heat-templates/environments/services/haproxy-public-tls-certmonger.yaml