$ oc create configmap custom-ca \
--from-file=ca-bundle.crt=</path/to/example-ca.crt> \(1)
-n openshift-config
默认情况下,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-----
的证书之后也都有一个回车符。
创建一个仅包含用于签署通配符证书的根 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 证书文件的路径。 |
使用新创建的配置映射更新集群范围的代理配置
$ oc patch proxy/cluster \
--type=merge \
--patch='{"spec":{"trustedCA":{"name":"custom-ca"}}}'
创建一个包含通配符证书链和密钥的密钥
$ 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> 是与该证书关联的私钥的路径。 |
使用新创建的密钥更新 Ingress Controller 配置
$ oc patch ingresscontroller.operator default \
--type=merge -p \
'{"spec":{"defaultCertificate": {"name": "<secret>"}}}' \(1)
-n openshift-ingress-operator
1 | 将 <secret> 替换为上一步中使用的密钥名称。 |