1.7. 重新载入证书


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

注意

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

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

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

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

通过触发 CertificateUpdatedEvent 并对它做出反应,手动重新载入 TLS 配置和通知组件的示例:

// 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
private final io.vertx.core.http.HttpServer server;

public void onCertificateUpdate(@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=30m
    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、REST、gRPC 和 WebSocket 服务器,以及管理界面(如果启用)。在客户端,Quarkus REST 客户端会自动处理证书更新事件。

注意

在 Quarkus dev 模式中,当文件 touched 时,它将更频繁地触发 CertificateUpdatedEvent

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat