1.7. 重新载入证书
从 TLSConfigurationRegistry 获取的 TlsConfiguration 包含重新加载证书的机制。reload 方法刷新密钥存储、信任存储和 CRL,通常是从文件系统中重新加载它们。
reload 操作不是自动的,必须手动触发。此外,TlsConfiguration 实施必须支持重新加载,就像配置的证书的情况一样。
reload 方法返回一个 布尔值,指示重新加载是否成功。值 true 表示 reload 操作成功,而不一定会更新证书。
在重新加载 TlsConfiguration 后,使用此配置的服务器和客户端可能需要执行特定的操作来应用新证书。
通知客户端和服务器有关证书重新加载的首选方法是触发 CDI 事件,类型为 io.quarkus.tls.CertificateUpdatedEvent。为此,请注入此类型的 CDI 事件,并在重新加载发生时触发它。
通过触发 CertificateUpdatedEvent 并对它做出反应,手动重新载入 TLS 配置和通知组件的示例:
1.7.1. 定期重新载入 复制链接链接已复制到粘贴板!
TLS 注册表包含一个内置机制,用于定期检查文件系统的更改和重新加载证书。reload-period 属性指定重新载入证书的时间间隔,并在每次重新载入证书时发出 CertificateUpdatedEvent 的时间间隔。
配置定期证书重新载入:
quarkus.tls.reload-period=1h quarkus.tls.key-store.pem.0.cert=tls.crt quarkus.tls.key-store.pem.0.key=tls.key
quarkus.tls.reload-period=1h quarkus.tls.key-store.pem.0.cert=tls.crt quarkus.tls.key-store.pem.0.key=tls.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于每个命名的配置,您可以设置特定的重新加载周期:
quarkus.tls.http.reload-period=30m quarkus.tls.http.key-store.pem.0.cert=tls.crt quarkus.tls.http.key-store.pem.0.key=tls.key
quarkus.tls.http.reload-period=30m quarkus.tls.http.key-store.pem.0.cert=tls.crt quarkus.tls.http.key-store.pem.0.key=tls.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
受影响的服务器和客户端可能需要侦听 CertificateUpdatedEvent 以应用新证书。这会自动处理 Quarkus HTTP、REST、gRPC 和 WebSocket 服务器,以及管理界面(如果启用)。在客户端,Quarkus REST 客户端会自动处理证书更新事件。
在 Quarkus dev 模式中,当文件 touched 时,它将更频繁地触发 CertificateUpdatedEvent。