1.2. 引用 TLS 配置
要使用 quarkus.tls.<name
> configured 所述引用您创建的 名为 配置示例 ,如 使用 TLS registry 中所述,使用 tls-configuration-name
属性,如下例所示:
核心 HTTP 服务器配置示例:
# Reference the named configuration quarkus.http.tls-configuration-name=MY_TLS_CONFIGURATION
gRPC 客户端配置示例:
quarkus.grpc.clients.hello.tls-configuration-name=MY_TLS_CONFIGURATION
SmallRye GraphQL 客户端配置示例:
quarkus.smallrye-graphql-client.my-client.tls-configuration-name=MY_TLS_CONFIGURATION
将 Typesafe GraphQL 客户端与证书重新加载机制搭配使用时,如 Reloading certificates 部分所述,务必要覆盖 bean 的范围到 RequestScoped
或比应用程序更短的另一个类似范围。这是因为,在默认情况下,Typesafe 客户端是一个应用程序范围内的 bean。缩短范围可确保证书重新加载后创建的 bean 的新实例将使用最新的证书进行配置。动态客户端有 @Dependent
范围,将它们注入具有适当范围的组件。
1.2.1. 引用 SunJSSE 的默认信任存储
JDK 发行版通常包含 $JAVA_HOME/lib/security/cacerts
文件中的信任存储。此信任存储用作 SunJSSE 的默认信任存储,这是 Java 安全套接字扩展(JSSE)的默认实现。SunJSSE 提供的 SSL/TLS 功能由各种 Java 运行时组件(如 javax.net.ssl.HttpsURLConnection
等)利用。
虽然 Quarkus 扩展通常不遵循 SunJSSE 的默认信任存储,但在某些情况下仍然实际使用它。这适用于从旧技术迁移,或在与操作系统(OS)同步的 Linux 发行版上运行。
为了简化 SunJSSE 信任存储的使用,Quarkus TLS Registry 在名称 javax.net.ssl
下提供 TLS 配置,它模拟 SunJSSE 的默认行为:
-
如果定义了
javax.net.ssl.trustStore
系统属性,则其值将被视为信任存储。 -
否则,路径
$JAVA_HOME/lib/security/jssecacerts
和$JAVA_HOME/lib/security/cacerts
被检查,第一个现有文件用作信任存储。 -
如果没有满足任何条件,则会抛出
IllegalStateException
。
打开 truststore 的密码取自 javax.net.ssl.trustStorePassword
系统属性。如果没有设置此属性,则使用默认密码 changeit
。
javax.net.ssl
配置可用作各种 storageclass tls-configuration-name
属性的值,如下所示:
gRPC 客户端配置示例:
quarkus.grpc.clients.hello.tls-configuration-name=javax.net.ssl
javax.net.ssl
TLS 配置既不能自定义,也不能被覆盖。