第 5 章 配置证书
5.1. 替换默认入口证书
5.1.1. 了解默认入口证书
默认情况下,OpenShift Container Platform 使用 Ingress Operator 创建内部 CA 并发布对 .apps
子域下应用程序有效的通配符证书。web 控制台和 CLI 也使用此证书。
内部基础架构 CA 证书是自签名的。虽然这种流程被某些安全或 PKI 团队认为是不当做法,但这里的风险非常小。隐式信任这些证书的客户端仅是集群中的其他组件。将默认通配符证书替换为由 CA bundle 中已包括的公共 CA 发布的证书,该证书由容器用户空间提供,允许外部客户端安全地连接到 .apps
子域下运行的应用程序。
5.1.2. 替换默认入口证书
您可以替换 .apps
子域下所有应用程序的默认入口证书。替换了证书后,包括 web 控制台和 CLI 在内的所有应用程序都会具有指定证书提供的加密。
先决条件
- 必须有通配符证书及其私钥可供使用,两者使用 PEM 格式。
-
证书的
subjectAltName
扩展必须是*.apps.<clustername>.<domain>
。
流程
创建包含用于签发新证书的证书颁发机构的 ConfigMap:
$ oc create configmap custom-ca \ --from-file=ca-bundle.crt=</path/to/example-ca.crt> \1 -n openshift-config
- 1
</path/to/cert.crt>
是 CA 在本地文件系统中的路径。
使用新创建的 ConfigMap 更新集群范围代理配置:
$ oc patch proxy/cluster \ --type=merge \ --patch='{"spec":{"trustedCA":{"name":"custom-ca"}}}'
创建包含通配符证书和密钥的 secret :
$ oc create secret tls <certificate> \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": "<certificate>"}}}' \1 -n openshift-ingress-operator
- 1
- 将
<certificate>
替换为上一步中用于 secret 的名称。