1.7. 重新载入证书


TLSConfigurationRegistry 获取的 TlsConfiguration 包含重新加载证书的机制。reload 方法刷新密钥存储和信任存储,通常通过从文件系统中重新加载它们。

注意

reload 操作不是自动的,必须手动触发。此外,TlsConfiguration 实施必须支持重新加载(这是配置的证书的情况)。

reload 方法返回一个 布尔值,指示重新加载是否成功。值 true 表示 reload 操作成功,而不一定会更新证书。

在重新加载 TlsConfiguration 后,使用此配置的服务器和客户端可能需要执行特定的操作来应用新证书。

通知客户端和服务器有关证书重新加载的建议方法是触发 CDI 事件,类型为 io.quarkus.tls.CertificateUpdatedEvent。为此,请注入此类型的 CDI 事件,并在重新加载发生时触发它。

  1. 手动触发重新载入并触发 CertificateUpdatedEvent
// in the class that performs the reload
@Inject
Event<CertificateUpdatedEvent> event;
@Inject
TlsConfigurationRegistry registry;

public void reload() {
    TlsConfiguration config = registry.get("name").orElseThrow();
    if (config.reload()) {
        event.fire(new CertificateUpdatedEvent("name", config));
    }
}

// In the server or client code
public void onReload(@Observes CertificateUpdatedEvent reload) {
    if ("name".equals(event.getName())) {
        server.updateSSLOptions(reload.tlsConfiguration().getSSLOptions());
        // Or update the SSLContext.
    }

}
Copy to Clipboard Toggle word wrap

1.7.1. 定期重新载入

TLS 注册表包含一个内置机制,用于定期检查文件系统的更改和重新加载证书。reload-period 属性指定重新载入证书的时间间隔,并在每次重新载入证书时发出 CertificateUpdatedEvent 的时间间隔。

  1. 配置定期证书重新载入:

    quarkus.tls.reload-period=1h
    quarkus.tls.key-store.pem.0.cert=tls.crt
    quarkus.tls.key-store.pem.0.key=tls.key
    Copy to Clipboard Toggle word wrap
  2. 对于每个命名的配置,您可以设置特定的重新加载周期:

    quarkus.tls.http.reload-period=30min
    quarkus.tls.http.key-store.pem.0.cert=tls.crt
    quarkus.tls.http.key-store.pem.0.key=tls.key
    Copy to Clipboard Toggle word wrap
重要

受影响的服务器和客户端可能需要侦听 CertificateUpdatedEvent 以应用新证书。这会自动为 Quarkus HTTP 服务器完成,包括管理界面(如果已启用)。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat