1.8. 使用 OpenShift serving 证书
在 OpenShift 中运行应用时,您可以使用 OpenShift 服务证书 自动生成和更新 TLS 证书。Quarkus TLS registry 可以使用这些证书和证书颁发机构(CA)文件来处理 HTTPS 流量并安全地验证证书。
1.8.1. 获取证书 复制链接链接已复制到粘贴板!
要让 OpenShift 生成服务证书,请注解现有的 Service 对象。生成的证书将存储在 secret 中,然后可以挂载到 pod 中。
以下片段使用带有注解示例 Service 对象来生成 TLS 证书。
查看 Service 对象的配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要生成证书,请在已创建的 OpenShift
服务中添加其注解:oc annotate service hero-service \ service.beta.openshift.io/serving-cert-secret-name=my-tls-secretoc annotate service hero-service \ service.beta.openshift.io/serving-cert-secret-name=my-tls-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注解
service.beta.openshift.io/serving-cert-secret-name指示 OpenShift 生成证书并将其存储在名为my-tls-secret的 secret 中。通过更新部署配置,将 secret 挂载为 pod 中的卷 :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 部署应用以使用 OpenShift 生成的证书。这将通过 HTTPS 提供该服务。
通过设置 quarkus.tls.key-store.pem.acme.cert 和 quarkus.tls.key-store.pem.acme.key 变量或其环境变量变体,TLS registry 将使用 secret 中的证书和私钥。
这会配置 Quarkus HTTP 服务器的默认密钥存储,它允许服务器使用该证书。有关在命名配置中使用此证书的详情,请参考 TLS 配置。
1.8.2. 信任证书颁发机构(CA) 复制链接链接已复制到粘贴板!
先决条件
现在,您的服务使用 OpenShift 发布的证书,请将您的客户端应用程序配置为信任此证书。为此,请创建一个包含 CA 证书的 ConfigMap,然后将 pod 配置为挂载它。以下步骤使用 Quarkus REST 客户端作为示例,但相同的方法适用于任何客户端。
首先定义一个 空 ConfigMap,它将填充 CA 证书:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow service.beta.openshift.io/inject-cabundle注解用于将 CA 证书注入 ConfigMap。请注意,ConfigMap 最初没有数据 - 它为空。在处理过程中,OpenShift 会将 CA 证书注入service-ca.crt文件中的 ConfigMap 中。通过添加卷并在部署配置中挂载 ConfigMap 来挂载 ConfigMap :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置 REST 客户端以使用此 CA 证书。
考虑以下 REST 客户端接口:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 配置基础 URI 和配置密钥。名称的格式必须是 <
service-name>.<namespace>.svc。否则,证书将不被信任。确保也配置了configKey。
将 REST 客户端配置为信任 OpenShift 生成的 CA 证书:
quarkus.rest-client.hero.tls-configuration-name=my-service-tls quarkus.tls.my-service-tls.trust-store.pem.certs=/deployments/tls/service-ca.crt
quarkus.rest-client.hero.tls-configuration-name=my-service-tls1 quarkus.tls.my-service-tls.trust-store.pem.certs=/deployments/tls/service-ca.crt2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8.3. 证书续订 复制链接链接已复制到粘贴板!
OpenShift 自动续订它生成的服务证书。当证书被续订时,会使用新证书和私钥来更新 secret。
要确保应用程序使用新证书,您可以使用 Quarkus TLS registry 的定期重新载入功能。
通过设置 reload-period 属性,TLS registry 会定期检查密钥存储和信任存储的更改,并在需要时重新载入它们:
quarkus.tls.reload-period=24h
quarkus.tls.reload-period=24h
- (可选)实施自定义机制,以在更新 secret 时重新加载证书。如需更多信息,请参阅 重新加载证书。