-----BEGIN CERTIFICATE-----
MIICLDCCAdKgAwIBAgIBADAKBggqhkjOPQQDAjB9MQswCQYDVQQGEwJCRTEPMA0G
...
l4wOuDwKQa+upc8GftXE2C//4mKANBC6It01gUaTIpo=
-----END CERTIFICATE-----
了解如何在 Red Hat Advanced Cluster Security for Kubernetes 中使用自定义 TLS 证书。设置证书后,用户和 API 客户端连接到 Central 时无需绕过证书安全警告。(Learn how to use a custom TLS certificate with Red Hat Advanced Cluster Security for Kubernetes. After you set up a certificate, users and API clients do not have to bypass the certificate security warnings when connecting to Central.)
您可以在安装期间或在现有的 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.)
您必须已经拥有 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
在 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
在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-----
在安装过程中提供配置文件
$ 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
在 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
在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-----
使用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。更改的传播可能需要长达一分钟的时间。
如果您使用的是不被全局信任的自定义证书,则必须配置 Sensor 以信任您的自定义证书。否则,您可能会收到错误。错误的具体类型可能因您的设置和使用的证书而异。通常,它是一个与x509 验证
相关的错误。
如果您使用的是全局信任的证书,则无需配置 Sensor 以信任您的自定义证书。 |
Sensor 包包含安装 Sensor 所需的配置文件和脚本。您可以从 RHACS 门户下载 Sensor 包。
在 RHACS 门户中,转到**平台配置** → **集群**。
单击**新建集群**并为集群指定一个名称。
如果您在同一集群中部署 Sensor,请接受所有字段的默认值。否则,如果您部署到不同的集群,请将地址central.stackrox.svc:443
替换为负载均衡器、节点端口或其他可从您计划安装 Sensor 的其他集群访问的地址(包括端口号)。
如果您使用的是不支持 gRPC 的负载均衡器,例如 HAProxy、AWS Application Load Balancer (ALB) 或 AWS Elastic Load Balancing (ELB),请使用 WebSocket Secure (
|
单击**下一步**继续。
单击**下载 YAML 文件和密钥**。
您已下载 Sensor 包。
如果您使用的是sensor.sh
脚本
解压 Sensor 包
$ unzip -d sensor sensor-<cluster_name>.zip
运行sensor.sh
脚本
$ ./sensor/sensor.sh
运行 sensor (./sensor/sensor.sh
) 脚本时会自动应用证书。您也可以在运行sensor.sh
脚本之前将其他自定义证书放在sensor/additional-cas/
目录中。
如果您不使用sensor.sh
脚本
解压 Sensor 包
$ unzip -d sensor sensor-<cluster_name>.zip
运行以下命令创建密钥
$ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ (1)
1 | 使用-d 选项指定包含自定义证书的目录。 |
如果出现“密钥已存在”错误消息,请使用
|
使用 YAML 文件继续 Sensor 部署。
您已下载 Sensor 包。
解压 Sensor 包
$ unzip -d sensor sensor-<cluster_name>.zip
运行以下命令创建密钥
$ ./sensor/ca-setup-sensor.sh -d sensor/additional-cas/ (1)
1 | 使用-d 选项指定包含自定义证书的目录。 |
如果出现“密钥已存在”错误消息,请使用
|
使用 YAML 文件继续 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