Chapter 1. Adding custom certificates


You can configure Red Hat Advanced Cluster Security for Kubernetes to use custom TLS certificates for Central and configure Sensor to trust custom certificates. After you set up a certificate, users and API clients do not have to bypass the certificate security warnings when connecting to Central.

1.1. Adding a custom security certificate

You can apply a security certificate during the installation or on an existing Red Hat Advanced Cluster Security for Kubernetes deployment.

Before adding custom certificates, ensure you have the required certificate files and understand the certificate chain requirements.

  • You must already have PEM-encoded private key and certificate files.
  • The certificate file should begin and end with human-readable blocks. For example:

    -----BEGIN CERTIFICATE-----
    MIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
    ...
    l4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
    -----END CERTIFICATE-----
  • The certificate file can contain either a single (leaf) certificate, or a certificate chain.

    Warning
    • If the certificate is not directly signed by a trusted root, you must give the full certificate chain, including any intermediate certificates.
    • All certificates in the chain must be in order so that the leaf certificate is the first and the root certificate is the last in the chain.
  • If you are using a custom certificate that is not globally trusted, you must also configure the Sensor to trust your custom certificate.

You can add a custom certificate during installation by using the Operator, Helm, or roxctl CLI.

Procedure

  • If you are installing Red Hat Advanced Cluster Security for Kubernetes using the Operator:

    1. Create a central-default-tls-cert secret that has the appropriate TLS certificates in the namespace where you install the Central service by entering the following command:

      $ oc -n <namespace> create secret tls central-default-tls-cert --cert <tls-cert.pem> --key <tls-key.pem>
  • If you are installing Red Hat Advanced Cluster Security for Kubernetes using Helm:

    1. Add your custom certificate and its key in the values-private.yaml file:

      central:
        # Configure a default TLS certificate (public cert + private key) for central
        defaultTLS:
          cert: |
            -----BEGIN CERTIFICATE-----
            EXAMPLE!MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
            ...
            -----END CERTIFICATE-----
          key: |
            -----BEGIN EC PRIVATE KEY-----
            EXAMPLE!MHcl4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
            ...
            -----END EC PRIVATE KEY-----
    2. Give the configuration file during the installation:

      $ helm install -n stackrox --create-namespace stackrox-central-services rhacs/central-services -f values-private.yaml
  • If you are installing Red Hat Advanced Cluster Security for Kubernetes using the roxctl CLI, give the certificate and key files when you run the installation program:

    • For the noninteractive installation program, use the --default-tls-cert and --default-tls-key options:

      $ roxctl central generate --default-tls-cert "cert.pem" --default-tls-key "key.pem"
    • For the interactive installation program, give the certificate and key files when you enter answers for the prompts:

      ...
      Enter PEM cert bundle file (optional): <cert.pem>
      Enter PEM private key file (optional): <key.pem>
      Enter administrator password (default: autogenerated):
      Enter orchestrator (k8s, openshift): openshift
      ...

You can add a custom certificate to an existing installation by using the Operator, Helm, or roxctl CLI.

Procedure

  • If you have installed Red Hat Advanced Cluster Security for Kubernetes using the Operator:

    1. Create a central-default-tls-cert secret that has the appropriate TLS certificates in the namespace where you installed the Central service by entering the following command:

      $ oc -n <namespace> create secret tls central-default-tls-cert --cert <tls-cert.pem> --key <tls-key.pem>
  • If you have installed Red Hat Advanced Cluster Security for Kubernetes using Helm:

    1. Add your custom certificate and its key in the values-private.yaml file:

      central:
        # Configure a default TLS certificate (public cert + private key) for central
        defaultTLS:
          cert: |
            -----BEGIN CERTIFICATE-----
            EXAMPLE!MIIMIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
            ...
            -----END CERTIFICATE-----
          key: |
            -----BEGIN EC PRIVATE KEY-----
            EXAMPLE!MHcl4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
            ...
            -----END EC PRIVATE KEY-----
    2. Use the helm upgrade command and give the updated configuration file:

      $ helm upgrade -n stackrox --create-namespace stackrox-central-services \
       rhacs/central-services --reuse-values \
       -f values-private.yaml

      where:

      --reuse-values
      Specifies that the upgrade will reuse existing values. You must use this parameter because the values-private.yaml file does not contain all of the required configuration values.
  • If you have installed Red Hat Advanced Cluster Security for Kubernetes using the roxctl CLI:

    • Create and apply a TLS secret from the PEM-encoded key and certificate files:

      $ oc -n stackrox create secret tls central-default-tls-cert \
        --cert <server_cert.pem> \
        --key <server_key.pem> \
        --dry-run -o yaml | oc apply -f -

      After you run this command, Central automatically applies the new key and certificate without restarting the pod. It might take up to a minute to propagate the changes.

If you use a custom certificate for Central, you can update the certificate by performing the following procedure.

Procedure

  1. Delete the existing custom certificate’s secret:

    $ oc delete secret central-default-tls-cert
  2. Create a new secret:

    $ oc -n stackrox create secret tls central-default-tls-cert \
      --cert <server_cert.pem> \
      --key <server_key.pem> \
      --dry-run -o yaml | oc apply -f -
  3. Restart the Central container.

1.1.5. Restarting the Central container

You can restart the Central container by deleting the Central pod.

Note

If you use Kubernetes, enter kubectl instead of oc.

Procedure

  • To delete the Central pod, run the following command:

    $ oc -n stackrox delete pod -lapp=central

If you are using a custom certificate that is not trusted globally, you must configure the Sensor to trust your custom certificate. Otherwise, you might get errors. The specific type of error might vary based on your setup and the certificate you use. Usually, it is an x509 validation related error.

Note

You do not need to configure the Sensor to trust your custom certificate if you are using a globally trusted certificate.

1.2.1. Downloading a Sensor bundle

The Sensor bundle includes the necessary configuration files and scripts to install Sensor. You can download the Sensor bundle from the RHACS portal.

Procedure

  1. In the RHACS portal, go to Platform Configuration Clusters.
  2. Click New Cluster and specify a name for the cluster.
  3. If you are deploying the Sensor in the same cluster, accept the default values for all the fields. Otherwise, if you are deploying into a different cluster, replace the address central.stackrox.svc:443 with a load balancer, node port, or other address (including the port number) that is accessible from the other cluster in which you are planning to install.

    Note

    If you are using a non-gRPC capable load balancer, such as HAProxy, AWS Application Load Balancer (ALB), or AWS Elastic Load Balancing (ELB) use the WebSocket Secure (wss) protocol. To use wss:

    1. Prefix the address with wss://, and
    2. Add the port number after the address, for example, wss://stackrox-central.example.com:443.
  4. Click Next to continue.
  5. Click Download YAML File and Keys.

You can configure a new Sensor to trust custom certificates by using the sensor.sh script or manually creating the secret.

Prerequisites

  • You have downloaded the Sensor bundle.

Procedure

  • If you are using the sensor.sh script:

    1. Extract the Sensor bundle:

      $ unzip -d sensor sensor-<cluster_name>.zip
    2. Run the sensor.sh script:

      $ ./sensor/sensor.sh

      The certificates are automatically applied when you run the sensor (./sensor/sensor.sh) script. You can also place additional custom certificates in the sensor/additional-cas/ directory before you run the sensor.sh script.

  • If you are not using the sensor.sh script:

    1. Extract the Sensor bundle:

      $ unzip -d sensor sensor-<cluster_name>.zip
    2. Run the following command to create the secret:

      $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/

      where:

      -d
      Specifies a directory containing custom certificates.
      Important

      If you get the "secret already exists" error message, re-run the script with the -u option:

      $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ -u
    3. Continue Sensor deployment by using the YAML files.

You can configure an existing Sensor to trust custom certificates by creating the secret with the ca-setup-sensor.sh script.

Prerequisites

  • You have downloaded the Sensor bundle.

Procedure

  1. Extract the Sensor bundle:

    $ unzip -d sensor sensor-<cluster_name>.zip
  2. Run the following command to create the secret:

    $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/

    where:

    -d
    Specifies a directory containing custom certificates.
    Important

    If you get the "secret already exists" error message, re-run the script with the -u option:

    $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ -u
  3. Continue Sensor deployment by using the YAML files.

1.2.4. Restarting the Sensor container

If you added the certificates to an existing Sensor, you must restart the Sensor container. You can restart the Sensor container either by stopping the container or by deleting the Sensor pod.

Procedure

  • Run the following command to stop the Sensor container:

    Note

    You must wait for at least 1 minute, until OpenShift Container Platform or Kubernetes propagates your changes and restarts the Sensor container.

    • On OpenShift Container Platform:

      $ oc -n stackrox deploy/sensor -c sensor -- kill 1
    • On Kubernetes:

      $ kubectl -n stackrox deploy/sensor -c sensor -- kill 1
  • Or, run the following command to delete the Sensor pod:

    • On OpenShift Container Platform:

      $ oc -n stackrox delete pod -lapp=sensor
    • On Kubernetes:

      $ kubectl -n stackrox delete pod -lapp=sensor
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat Documentation

Legal Notice

Theme

© 2026 Red Hat
Back to top