×

了解默认入口证书

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

内部基础设施 CA 证书是自签名的。虽然某些安全或 PKI 团队可能会认为此过程是不良做法,但此处的任何风险都很小。唯一隐式信任这些证书的客户端是集群中的其他组件。将默认通配符证书替换为由容器用户空间提供的 CA 捆绑包中已包含的公共 CA 颁发的证书,允许外部客户端安全地连接到在 .apps 子域名下运行的应用程序。

替换默认入口证书

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

先决条件
  • 您必须拥有针对完全限定的 .apps 子域名及其对应的私钥的通配符证书。每个证书都应位于单独的 PEM 格式文件中。

  • 私钥必须未加密。如果您的密钥已加密,请在将其导入 OpenShift Container Platform 之前对其进行解密。

  • 证书必须包含显示 *.apps.<clustername>.<domain>subjectAltName 扩展。

  • 证书文件可以包含一个或多个证书链中的证书。通配符证书必须是文件中的第一个证书。然后可以跟随任何中间证书,文件应以根 CA 证书结尾。

  • 将根 CA 证书复制到另一个 PEM 格式的文件中。

  • 验证所有包含 -----END CERTIFICATE----- 的证书之后也都有一个回车符。

步骤
  1. 创建一个仅包含用于签署通配符证书的根 CA 证书的配置映射

    $ oc create configmap custom-ca \
         --from-file=ca-bundle.crt=</path/to/example-ca.crt> \(1)
         -n openshift-config
    1 </path/to/example-ca.crt> 是本地文件系统上根 CA 证书文件的路径。
  2. 使用新创建的配置映射更新集群范围的代理配置

    $ oc patch proxy/cluster \
         --type=merge \
         --patch='{"spec":{"trustedCA":{"name":"custom-ca"}}}'
  3. 创建一个包含通配符证书链和密钥的密钥

    $ oc create secret tls <secret> \(1)
         --cert=</path/to/cert.crt> \(2)
         --key=</path/to/cert.key> \(3)
         -n openshift-ingress
    1 <secret> 是将包含证书链和私钥的密钥的名称。
    2 </path/to/cert.crt> 是本地文件系统上证书链的路径。
    3 </path/to/cert.key> 是与该证书关联的私钥的路径。
  4. 使用新创建的密钥更新 Ingress Controller 配置

    $ oc patch ingresscontroller.operator default \
         --type=merge -p \
         '{"spec":{"defaultCertificate": {"name": "<secret>"}}}' \(1)
         -n openshift-ingress-operator
    1 <secret> 替换为上一步中使用的密钥名称。

其他资源