第 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 格式文件中。
流程
创建仅包含用于为通配符证书签名的 root CA 证书的配置映射:
$ oc create configmap custom-ca \ --from-file=ca-bundle.crt=</path/to/example-ca.crt> \1 -n openshift-config
- 1
</path/to/cert.crt>
是 root CA 证书文件在本地文件系统中的路径。
使用新创建的配置映射更新集群范围的代理配置:
$ oc patch proxy/cluster \ --type=merge \ --patch='{"spec":{"trustedCA":{"name":"custom-ca"}}}'
创建包含通配符证书链和密钥的 secret :
$ oc create secret tls <secret> \1 --cert=</path/to/cert.crt> \2 --key=</path/to/cert.key> \3 -n openshift-ingress
使用新创建的 secret 更新 Ingress Controller 配置:
$ oc patch ingresscontroller.operator default \ --type=merge -p \ '{"spec":{"defaultCertificate": {"name": "<secret>"}}}' \1 -n openshift-ingress-operator
- 1
- 将
<secret>
替换为上一步中用于 secret 的名称。