第 3 章 配置证书


3.1. 替换默认入口证书

3.1.1. 了解默认入口证书

默认情况下,OpenShift Container Platform 使用 Ingress Operator 创建内部 CA 并发布对 .apps 子域下应用程序有效的通配符证书。web 控制台和 CLI 也使用此证书。

内部基础架构 CA 证书是自签名的。虽然这种流程被某些安全或 PKI 团队认为是不当做法,但这里的风险非常小。隐式信任这些证书的客户端仅是集群中的其他组件。将默认通配符证书替换为由 CA bundle 中已包括的公共 CA 发布的证书,该证书由容器用户空间提供,允许外部客户端安全地连接到 .apps 子域下运行的应用程序。

3.1.2. 替换默认入口证书

您可以替换 .apps 子域下所有应用程序的默认入口证书。替换了证书后,包括 web 控制台和 CLI 在内的所有应用程序都会具有指定证书提供的加密。

先决条件

  • 您必须有用于完全限定 .apps 子域及其对应私钥的通配符证书。每个文件都应该采用单独的 PEM 格式。
  • 私钥必须取消加密。如果您的密钥是加密的,请在将其导入到 OpenShift Container Platform 前对其进行解密。
  • 证书必须包含显示 *.apps.<clustername>.<domain>subjectAltName 扩展。
  • 证书文件可以包含链中的一个或者多个证书。该文件必须将通配符证书列为第一个证书,后跟其他中间证书,然后以 root CA 证书结尾。
  • 将 root CA 证书复制到额外的 PEM 格式文件中。
  • 验证所有包含 -----END CERTIFICATE----- 的证书在该行后有一个回车。

流程

  1. 创建仅包含用于为通配符证书签名的 root CA 证书的配置映射:

    $ oc create configmap custom-ca \
         --from-file=ca-bundle.crt=</path/to/example-ca.crt> \
    1
    
         -n openshift-config
    Copy to Clipboard Toggle word wrap
    1
    </path/to/cert.crt> 是 root CA 证书文件在本地文件系统中的路径。例如,/etc/pki/ca-trust/source/anchors
  2. 使用新创建的配置映射更新集群范围的代理配置:

    $ oc patch proxy/cluster \
         --type=merge \
         --patch='{"spec":{"trustedCA":{"name":"custom-ca"}}}'
    Copy to Clipboard Toggle word wrap
    注意

    如果您只更新集群的可信 CA,MCO 会更新 /etc/pki/ca-trust/source/anchors/openshift-config-user-ca-bundle.crt 文件,Machine Config Controller (MCC) 将可信 CA 更新应用到每个节点,以便不需要重启节点。但是,在这些更改时,Machine Config Daemon (MCD) 会在每个节点上重启关键服务,如 kubelet 和 CRI-O。这些服务重启会导致每个节点简要进入 NotReady 状态,直到服务完全重启为止。

    如果您更改了 openshift-config-user-ca-bundle.crt 文件中的任何其他参数,如 noproxy,MCO 会重启集群中的每个节点。

  3. 创建包含通配符证书链和密钥的 secret :

    $ oc create secret tls <secret> \
    1
    
         --cert=</path/to/cert.crt> \
    2
    
         --key=</path/to/cert.key> \
    3
    
         -n openshift-ingress
    Copy to Clipboard Toggle word wrap
    1
    <secret> 是将要包含证书链和私钥的 secret 的名称。
    2
    </path/to/cert.crt> 是证书链在本地文件系统中的路径。
    3
    </path/to/cert.key> 是与此证书关联的私钥的路径。
  4. 使用新创建的 secret 更新 Ingress Controller 配置:

    $ oc patch ingresscontroller.operator default \
         --type=merge -p \
         '{"spec":{"defaultCertificate": {"name": "<secret>"}}}' \
    1
    
         -n openshift-ingress-operator
    Copy to Clipboard Toggle word wrap
    1
    <secret> 替换为上一步中用于 secret 的名称。
    重要

    要触发 Ingress Operator 执行滚动更新,您必须更新 secret 的名称。因为 kubelet 会自动将更改传播到卷挂载中的 secret,所以更新 secret 内容不会触发滚动更新。如需更多信息,请参阅红帽知识库解决方案

其他资源

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat