×

添加自定义安全证书 (Adding a custom security certificate)

您可以在安装期间或在现有的 Red Hat Advanced Cluster Security for Kubernetes 部署中应用安全证书。(You can apply a security certificate during the installation or on an existing Red Hat Advanced Cluster Security for Kubernetes deployment.)

添加自定义证书的先决条件 (Prerequisites for adding custom certificates)

先决条件 (Prerequisites)
  • 您必须已经拥有 PEM 编码的私钥和证书文件。(You must already have PEM-encoded private key and certificate files.)

  • 证书文件应该以人类可读的块开头和结尾。例如

    -----BEGIN CERTIFICATE-----
    MIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
    ...
    l4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
    -----END CERTIFICATE-----
  • 证书文件可以包含单个(叶子)证书或证书链。

    • 如果证书不是由受信任的根证书直接签名的,则必须提供完整的证书链,包括任何中间证书。

    • 链中的所有证书必须按顺序排列,以便叶子证书位于链的开头,根证书位于链的结尾。

  • 如果您使用的是不被全局信任的自定义证书,则还必须配置 Sensor 以信任您的自定义证书。

新安装期间添加自定义证书

步骤
  • 如果您使用 Operator 安装 Red Hat Advanced Cluster Security for Kubernetes

    1. 在 Central 服务将要安装的命名空间中,创建一个包含相应 TLS 证书的central-default-tls-cert密钥,方法是输入以下命令

      oc -n <namespace> create secret tls central-default-tls-cert --cert <tls-cert.pem> --key <tls-key.pem>
  • 如果您使用 Helm 安装 Red Hat Advanced Cluster Security for Kubernetes

    1. values-private.yaml文件中添加您的自定义证书及其密钥

      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. 在安装过程中提供配置文件

      $ helm install -n stackrox --create-namespace stackrox-central-services rhacs/central-services -f values-private.yaml
  • 如果您使用roxctl CLI安装 Red Hat Advanced Cluster Security for Kubernetes,请在运行安装程序时提供证书和密钥文件

    • 对于非交互式安装程序,请使用--default-tls-cert--default-tls-key选项

      $ roxctl central generate --default-tls-cert "cert.pem" --default-tls-key "key.pem"
    • 对于交互式安装程序,在您输入提示的答案时提供证书和密钥文件

      ...
      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
      ...

为现有实例添加自定义证书

步骤
  • 如果您使用 Operator 安装了 Red Hat Advanced Cluster Security for Kubernetes

    1. 在 Central 服务已安装的命名空间中,创建一个包含相应 TLS 证书的central-default-tls-cert密钥,方法是输入以下命令

      oc -n <namespace> create secret tls central-default-tls-cert --cert <tls-cert.pem> --key <tls-key.pem>
  • 如果您使用 Helm 安装了 Red Hat Advanced Cluster Security for Kubernetes

    1. values-private.yaml文件中添加您的自定义证书及其密钥

      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. 使用helm upgrade命令并提供更新后的配置文件

      
      $ helm upgrade -n stackrox --create-namespace stackrox-central-services \
       rhacs/central-services --reuse-values \(1)
       -f values-private.yaml
      1 您必须使用此参数,因为values-private.yaml文件不包含所有必需的配置值。
  • 如果您使用roxctl CLI安装了 Red Hat Advanced Cluster Security for Kubernetes

    • 从 PEM 编码的密钥和证书文件创建并应用 TLS 密钥。

      $ 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 -

      运行此命令后,Central 会自动应用新的密钥和证书,无需重新启动 pod。更改的传播可能需要长达一分钟的时间。

更新现有实例的自定义证书

如果您为 Central 使用自定义证书,可以通过执行以下步骤来更新证书。

步骤
  1. 删除现有自定义证书的密钥

    $ oc delete secret central-default-tls-cert
  2. 创建一个新的密钥

    $ 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. 重新启动 Central 容器。

重新启动 Central 容器

您可以通过终止 Central 容器或删除 Central pod 来重新启动 Central 容器。

步骤
  • 运行以下命令来终止 Central 容器

    您必须等待至少 1 分钟,直到 OpenShift Container Platform 传播您的更改并重新启动 Central 容器。

    $ oc -n stackrox exec deploy/central -c central -- kill 1
  • 或者,运行以下命令删除 Central pod

    $ oc -n stackrox delete pod -lapp=central

配置 Sensor 以信任自定义证书

如果您使用的是不被全局信任的自定义证书,则必须配置 Sensor 以信任您的自定义证书。否则,您可能会收到错误。错误的具体类型可能因您的设置和使用的证书而异。通常,它是一个与x509 验证相关的错误。

如果您使用的是全局信任的证书,则无需配置 Sensor 以信任您的自定义证书。

下载 Sensor 包

Sensor 包包含安装 Sensor 所需的配置文件和脚本。您可以从 RHACS 门户下载 Sensor 包。

步骤
  1. 在 RHACS 门户中,转到**平台配置** → **集群**。

  2. 单击**新建集群**并为集群指定一个名称。

  3. 如果您在同一集群中部署 Sensor,请接受所有字段的默认值。否则,如果您部署到不同的集群,请将地址central.stackrox.svc:443替换为负载均衡器、节点端口或其他可从您计划安装 Sensor 的其他集群访问的地址(包括端口号)。

    如果您使用的是不支持 gRPC 的负载均衡器,例如 HAProxy、AWS Application Load Balancer (ALB) 或 AWS Elastic Load Balancing (ELB),请使用 WebSocket Secure (wss) 协议。要使用wss

    1. 在地址前加wss://,并且

    2. 在地址后添加端口号,例如wss://stackrox-central.example.com:443

  4. 单击**下一步**继续。

  5. 单击**下载 YAML 文件和密钥**。

部署新的 Sensor 时配置 Sensor 以信任自定义证书

先决条件 (Prerequisites)
  • 您已下载 Sensor 包。

步骤
  • 如果您使用的是sensor.sh脚本

    1. 解压 Sensor 包

      $ unzip -d sensor sensor-<cluster_name>.zip
    2. 运行sensor.sh脚本

      $ ./sensor/sensor.sh

      运行 sensor (./sensor/sensor.sh) 脚本时会自动应用证书。您也可以在运行sensor.sh脚本之前将其他自定义证书放在sensor/additional-cas/目录中。

  • 如果您不使用sensor.sh脚本

    1. 解压 Sensor 包

      $ unzip -d sensor sensor-<cluster_name>.zip
    2. 运行以下命令创建密钥

      $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ (1)
      1 使用-d选项指定包含自定义证书的目录。

      如果出现“密钥已存在”错误消息,请使用-u选项重新运行脚本

      $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ -u
    3. 使用 YAML 文件继续 Sensor 部署。

配置现有 Sensor 以信任自定义证书

先决条件 (Prerequisites)
  • 您已下载 Sensor 包。

步骤
  1. 解压 Sensor 包

    $ unzip -d sensor sensor-<cluster_name>.zip
  2. 运行以下命令创建密钥

    $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ (1)
    1 使用-d选项指定包含自定义证书的目录。

    如果出现“密钥已存在”错误消息,请使用-u选项重新运行脚本

    $ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ -u
  3. 使用 YAML 文件继续 Sensor 部署。

如果您已将证书添加到现有 sensor,则必须重新启动 Sensor 容器。

重新启动 Sensor 容器

您可以通过终止容器或删除 Sensor pod 来重新启动 Sensor 容器。

步骤
  • 运行以下命令来终止 Sensor 容器

    您必须等待至少 1 分钟,直到 OpenShift Container Platform 或 Kubernetes 传播您的更改并重新启动 Sensor 容器。

    • 在 OpenShift Container Platform 上

      $ oc -n stackrox deploy/sensor -c sensor -- kill 1
    • 在 Kubernetes 上

      $ kubectl -n stackrox deploy/sensor -c sensor -- kill 1
  • 或者,运行以下命令删除 Sensor pod

    • 在 OpenShift Container Platform 上

      $ oc -n stackrox delete pod -lapp=sensor
    • 在 Kubernetes 上

      $ kubectl -n stackrox delete pod -lapp=sensor