1.3. 配置 TLS


TLS 配置主要涉及管理密钥存储和信任存储。具体设置取决于使用的格式,如 PEM、P12 或 JKS。

以下小节概述了用于配置 TLS 的各种属性。

1.3.1. 密钥存储

密钥存储用于存储私钥和证书。它们主要在服务器端使用,但也可以在使用 mTLS 时在客户端上使用。

1.3.1.1. PEM 密钥存储

隐私增强邮件(PEM)密钥存储由文件对列表组成:

  • 证书文件 - .crt.pem 文件
  • 私钥文件通常是 .key 文件

配置 PEM 密钥存储:

quarkus.tls.key-store.pem.a.cert=server.crt
quarkus.tls.key-store.pem.a.key=server.key
quarkus.tls.key-store.pem.b.cert=my-second-cert.crt
quarkus.tls.key-store.pem.b.key=my-second-key.key
Copy to Clipboard Toggle word wrap

在大多数情况下,您只需要一个由证书和私钥组成的对。即使证书是证书链的一部分,它只包含一个与最终用户证书对应的私钥。

当配置了多个对时,选择配置的证书和私钥对基于 Server Name Indication (SNI)。客户端将客户端要连接到的服务器的名称发送到,服务器选择相应的证书和私钥对。要使用这个功能,请确保客户端和服务器上都启用了 SNI

重要

当配置多个密钥对或证书对时,服务器默认以名称的字典顺序执行配置的对,如在上例中使用 store.pem.astore.pem.b 所示。首先执行具有最低字典顺序的对。要更改它,您可以使用 quarkus.tls.key-store.pem.order 属性定义顺序。例如,quarkus.tls.key-store.pem.order=b,c,a

使用 SNI 时此设置非常重要,因为它使用第一个指定的对作为默认值。

1.3.1.2. PKCS12 密钥存储

PKCS12 密钥存储是包含证书和私钥的单个文件。

配置 PKCS12 密钥存储:

quarkus.tls.key-store.p12.path=server-keystore.p12
quarkus.tls.key-store.p12.password=secret
Copy to Clipboard Toggle word wrap

.p12 文件受密码保护,因此您需要提供密码以打开密钥存储。

这些文件可以包含多个证书和私钥。如果是这种情况,请执行以下操作之一:

  • 提供并配置您要使用的证书和私钥的别名:

    quarkus.tls.key-store.p12.path=server-keystore.p12
    quarkus.tls.key-store.p12.password=secret
    quarkus.tls.key-store.p12.alias=my-alias
    quarkus.tls.key-store.p12.alias-password=my-alias-password
    Copy to Clipboard Toggle word wrap
  • 或者,使用 SNI 选择适当的证书和私钥。请注意,所有密钥都必须使用相同的密码。

1.3.1.3. JKS 密钥存储

JKS 密钥存储是单一文件,其中包含服务器或客户端的证书和私钥,用于在 TLS/SSL 连接中进行身份验证和建立安全通信。

重要

JKS 是旧的,但仍然广泛使用特定于 Java 的格式。但是,要使用这种格式,您必须使用特定格式,并且 nowadays 也已弃用,Java 工具。因此,不建议将其与红帽构建的 Quarkus 应用程序一起使用。

另外,OpenShift cert-manager 或 Let 的 Encrypt 通常不提供 JKS,并且保持 PEM-only。

配置 JKS 密钥存储:

quarkus.tls.key-store.jks.path=server-keystore.jks
quarkus.tls.key-store.jks.password=secret
Copy to Clipboard Toggle word wrap

.jks 文件受密码保护,因此您需要提供密码以打开密钥存储。另外,它们也可以包含多个证书和私钥。如果是这种情况:

  • 提供并配置您要使用的证书和私钥的别名:

    quarkus.tls.key-store.jks.path=server-keystore.jks
    quarkus.tls.key-store.jks.password=secret
    quarkus.tls.key-store.jks.alias=my-alias
    quarkus.tls.key-store.jks.alias-password=my-alias-password
    Copy to Clipboard Toggle word wrap
  • 或者,使用 SNI 选择适当的证书和私钥。请注意,所有密钥都必须使用相同的密码。

1.3.1.4. SNI

服务器名称 Indication (SNI)是一个 TLS 扩展,使客户端能够指定在 TLS 握手期间尝试连接的主机名。SNI 可让服务器为单个 IP 地址上的多个域提供不同的 TLS 证书,这有助于为虚拟主机场景提供安全通信。

启用 SNI:

quarkus.tls.key-store.sni=true # Disabled by default
Copy to Clipboard Toggle word wrap

启用 SNI 后,客户端表示 TLS 握手期间的服务器名称,允许服务器选择适当的证书:

  • 使用 PEM 文件配置密钥存储时,必须提供多个证书(CRT)和密钥文件。CRT 是 X.509 证书文件的一个通用文件扩展,通常采用 PEM (Privacy-Enhanced Mail)格式。这些文件包含公共证书。
  • 使用 JKS 或 P12 文件配置密钥存储时,服务器会根据 TLS 握手期间客户端提供的 SNI 主机名选择适当的证书。服务器使用存储在密钥存储中的证书中配置的通用名称(CN)或主题替代名称(SAN)匹配 SNI 主机名。所有密钥存储和别名密码都必须相同。

1.3.1.5. 凭证供应商

您可以使用凭据提供程序,而不是在配置中传递密钥存储密码和别名密码。

凭据提供程序提供检索密钥存储和别名密码的方式。请注意,只有在配置中未设置密码或别名密码时,才会使用凭证供应商。

配置凭证供应商:

# The name of the credential bucket in the credentials provider
quarkus.tls.key-store.credentials-provider.name=my-credentials

# The name of the bean providing the credential provider (optional, using the default credential provider if not set)
quarkus.tls.key-store.credentials-provider.bean-name=my-credentials-provider

# The key used to retrieve the keystore password, `password` by default
quarkus.tls.key-store.credentials-provider.password-key=password

# The key used to retrieve the alias password, `alias-password` by default
quarkus.tls.key-store.credentials-provider.alias-password-key=alias-password
Copy to Clipboard Toggle word wrap
重要

凭证供应商只能与 PKCS12 和 JKS 密钥存储一起使用。

1.3.2. 信任存储

信任存储用于存储可信方的证书。在常规 TLS 中,客户端使用信任存储来验证服务器。使用 mutual TLS (mTLS),服务器和客户端都使用信任存储来相互验证。

1.3.2.1. PEM truststores

PEM truststores 由 .crt.pem 文件列表组成。它们各自包含一个证书。

配置 PEM 信任存储:

quarkus.tls.trust-store.pem.certs=ca.crt,ca2.pem
Copy to Clipboard Toggle word wrap

1.3.2.2. PKCS12 信任存储

PKCS12 信任存储是一个包含证书的单个文件。当包含多个证书时,您可以使用别名选择适当的证书。

配置 PKCS12 信任存储:

quarkus.tls.trust-store.p12.path=client-truststore.p12
quarkus.tls.trust-store.p12.password=password
quarkus.tls.trust-store.p12.alias=my-alias
Copy to Clipboard Toggle word wrap

.p12 文件受密码保护,因此您需要提供密码以打开信任存储。但是,与密钥存储不同,别名不需要密码,因为它包含公共证书,而不是私钥。

1.3.2.3. JKS 信任存储

JKS 信任存储是包含多个证书的单个文件。当存在多个证书时,您可以使用别名选择适当的证书。但是,避免使用 JKS 格式,因为它比 PKCS12 的安全性较低。

配置 JKS 信任存储:

quarkus.tls.trust-store.jks.path=client-truststore.jks
quarkus.tls.trust-store.jks.password=password
quarkus.tls.trust-store.jks.alias=my-alias
Copy to Clipboard Toggle word wrap

.jks 文件受密码保护,因此您需要提供密码以打开信任存储。但是,与密钥存储不同,别名不需要密码,因为它包含公共证书,而不是私钥。

1.3.2.4. 凭证供应商

您可以使用凭证供应商,而不是在配置中传递信任存储密码。凭证供应商允许您检索密码和其他凭证。请注意,只有在配置中未设置密码时,才会使用凭证供应商。

配置凭证供应商:

# The name of the credential bucket in the credentials provider
quarkus.tls.trust-store.credentials-provider.name=my-credentials

# The name of the bean providing the credential provider (optional, using the default credential provider if not set)
quarkus.tls.trust-store.credentials-provider.bean-name=my-credentials-provider

# The key used to retrieve the truststore password, `password` by default
quarkus.tls.trust-store.credentials-provider.password-key=password
Copy to Clipboard Toggle word wrap
重要

凭证供应商只能与 PKCS12 和 JKS 信任存储一起使用。

1.3.3. 其他属性

虽然 keystores 和 truststores 是最重要的属性,但还有其他属性可用于配置 TLS。

注意

虽然以下示例 使用默认配置,但您可以通过将属性与配置的名称作为前缀来使用 命名 配置。

1.3.3.1. 密码套件

密码套件是您可以在 TLS 握手过程中使用的密码列表。您可以配置启用的密码套件的排序列表。如果没有配置,则会从内置密码中选择合理的默认值。但是,在指定时,您的配置前面的是 SSL 引擎定义的默认套件。

配置密码套件:

quarkus.tls.cipher-suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
Copy to Clipboard Toggle word wrap

1.3.3.2. TLS 协议版本

TLS 协议版本是 TLS 握手期间可以使用的协议列表。启用的 TLS 协议版本以用逗号分开的排序列表的形式指定。相关的配置属性是 quarkus.tls.protocols (或 quarkus.tls.<name>.protocols 用于命名 TLS 配置)。如果没有配置,则默认为 TLSv1.3,TLSv1.2

可用的选项有 TLSv1TLSv1.1TLSv1.2TLSv1.3

例如,仅启用 TLSv1.3

quarkus.tls.protocols=TLSv1.3
Copy to Clipboard Toggle word wrap

1.3.3.3. 握手超时

当建立 TLS 连接时,握手阶段是第一步。在此阶段,客户端和服务器交换信息来建立连接,这通常包括密码套件、TLS 协议版本和验证。

为握手阶段配置超时:

quarkus.tls.handshake-timeout=10S # Default.
Copy to Clipboard Toggle word wrap

1.3.3.4. ALPN

应用程序协议协商(ALPN)是一种 TLS 扩展,它允许客户端和服务器协商它们将在 TLS 握手期间进行通信的协议。ALPN 通过允许客户端在建立 TLS 连接前向服务器指示首选应用程序协议来启用效率更高的通信。

这有助于在 HTTP/2 等情形中使用多个协议,从而加快协议选择。

ALPN 默认启用。

  • 要禁用它:

    quarkus.tls.alpn=false
    Copy to Clipboard Toggle word wrap
    警告

    不建议在非预期的情况下禁用 ALPN,因为它可能会导致性能下降、协议协商问题和意外行为,特别是 HTTP/2 等协议。但是,在协议协商导致冲突的特定边缘情况下,禁用 ALPN 有助于诊断原生不一致或测试性能。

1.3.3.5. 证书撤销列表(CRL)

证书撤销列表(CRL)是发布证书颁发机构(CA)在调度过期日期前撤销的证书列表。当证书被破坏时,不再需要或被视为无效,CA 将其添加到 CRL 中,以告知依赖方不再信任它。

您可以使用 DER 或 PKCS Slack7 (P7B)格式,使用您不再信任的证书文件列表配置 CRL。

  • 对于 DER 格式,传递 DER 编码的 CRL。
  • 对于 PKCS#7 格式,传递 SignedData 对象,其中唯一 significant 字段是 crls

配置 CRL:

quarkus.tls.certificate-revocation-list=ca.crl, ca2.crl
Copy to Clipboard Toggle word wrap

1.3.3.6. 信任所有证书和主机名验证

您可以将 TLS 连接配置为信任所有证书,并禁用主机名验证。请注意,它们是两个不同的进程:

  • 信任所有证书都忽略证书验证,因此所有证书都是可信的证书。此方法可用于使用自签名证书进行测试,但不应在生产环境中使用。
  • 主机名验证是验证服务器身份的过程。

它对防止中间人攻击很有用,并且通常默认为 HTTPSLDAPS

重要

不应该在生产环境中使用这两个属性。

信任所有证书:

quarkus.tls.trust-all=true
Copy to Clipboard Toggle word wrap

禁用主机名验证:

quarkus.tls.hostname-verification-algorithm=NONE
Copy to Clipboard Toggle word wrap

1.3.4. 配置参考

下表列出了支持的属性:

build 时修复的 - 配置属性在构建时修复 - 所有其他配置属性在运行时可覆盖

Expand

配置属性

类型

default

在构建时修复了 quarkus.tls.lets-encrypt.enabled

设置为 true 以启用加密支持。

环境变量: QUARKUS_TLS_LETS_ENCRYPT_ENABLED

布尔值

false

quarkus.tls.key-store.pem.order

密钥/证书文件的顺序,取决于 keyCerts 映射中的名称。

默认情况下,Quarkus 使用字典顺序对键进行排序。此属性允许您指定密钥/证书文件的顺序。

环境变量: QUARKUS_TLS_KEY_STORE_PEM_ORDER

字符串列表

 

quarkus.tls.key-store.p12.path

密钥存储文件的路径(P12 / PFX 格式)。

环境变量: QUARKUS_TLS_KEY_STORE_P12_PATH

path

所需的 HEKETI Required

quarkus.tls.key-store.p12.password

密钥存储的密码。如果没有设置,则必须从凭证提供程序检索密码。

环境变量: QUARKUS_TLS_KEY_STORE_P12_PASSWORD

string

 

quarkus.tls.key-store.p12.alias

密钥存储中私钥和证书的别名。

环境变量: QUARKUS_TLS_KEY_STORE_P12_ALIAS

string

 

quarkus.tls.key-store.p12.alias-password

密钥存储中别名的密码。如果没有设置,则从凭证提供程序检索密码。

环境变量: QUARKUS_TLS_KEY_STORE_P12_ALIAS_PASSWORD

string

 

quarkus.tls.key-store.p12.provider

密钥存储的提供商。

环境变量: QUARKUS_TLS_KEY_STORE_P12_PROVIDER

string

 

quarkus.tls.key-store.jks.path

密钥存储文件的路径(JKS 格式)。

环境变量: QUARKUS_TLS_KEY_STORE_JKS_PATH

path

所需的 HEKETI Required

quarkus.tls.key-store.jks.password

密钥存储的密码。如果没有设置,则必须从凭证提供程序检索密码。

环境变量: QUARKUS_TLS_KEY_STORE_JKS_PASSWORD

string

 

quarkus.tls.key-store.jks.alias

密钥存储中私钥和证书的别名。

环境变量: QUARKUS_TLS_KEY_STORE_JKS_ALIAS

string

 

quarkus.tls.key-store.jks.alias-password

密钥存储中别名的密码。如果没有设置,则可从凭据提供程序检索密码。

环境变量: QUARKUS_TLS_KEY_STORE_JKS_ALIAS_PASSWORD

string

 

quarkus.tls.key-store.jks.provider

密钥存储的提供商。

环境变量: QUARKUS_TLS_KEY_STORE_JKS_PROVIDER

string

 

quarkus.tls.key-store.sni

启用服务器名称调用(SNI)。

服务器名称 Indication (SNI)是一个 TLS 扩展,它允许客户端指定在 TLS 握手期间尝试连接到的主机名。这可让服务器在单个 IP 地址上为多个域提供不同的 SSL 证书,为虚拟主机场景提供安全通信。

启用此设置后,客户端在 TLS 握手期间指示服务器名称,允许服务器选择正确的证书。

使用 PEM 文件配置密钥存储时,必须指定多个 CRT/Key。使用 JKS 或 P12 文件配置密钥存储时,它会根据 SNI 主机名选择一个别名。在这种情况下,所有密钥存储密码和别名密码都必须相同(使用 密码和 alias-password 属性配置)。不要设置 alias 属性。

环境变量: QUARKUS_TLS_KEY_STORE_SNI

布尔值

false

quarkus.tls.key-store.credentials-provider.name

io.quarkus.credentials.CredentialsProvider 中检索的 "credential" 存储桶(map key passwords)的名称。如果没有设置,则不会使用凭证供应商。

凭据提供程序提供了一种方式,可以检索密钥存储密码和别名密码。请注意,只有在配置中未设置密码时,才会使用凭证供应商。

环境变量: QUARKUS_TLS_KEY_STORE_CREDENTIALS_PROVIDER_NAME

string

 

quarkus.tls.key-store.credentials-provider.bean-name

提供凭据供应商的 bean 的名称。

该名称用于选择要使用的凭据提供程序。凭据提供程序必须公开为 CDI Bean,并且 @Named 注释设置为选定的配置的名称。

如果没有设置,则使用默认凭证供应商。

环境变量: QUARKUS_TLS_KEY_STORE_CREDENTIALS_PROVIDER_BEAN_NAME

string

 

quarkus.tls.key-store.credentials-provider.password-key

用于检索密钥存储密码的密钥。

如果所选凭证供应商不支持该密钥,则不会检索密码。否则,检索的值用于打开密钥存储。

环境变量: QUARKUS_TLS_KEY_STORE_CREDENTIALS_PROVIDER_PASSWORD_KEY

string

password

quarkus.tls.key-store.credentials-provider.alias-password-key

用于检索密钥存储别名密码的密钥。

如果所选凭证供应商不包含密钥,则不会检索别名密码。否则,检索的值用于从密钥存储访问别名 私钥

环境变量: QUARKUS_TLS_KEY_STORE_CREDENTIALS_PROVIDER_ALIAS_PASSWORD_KEY

string

alias-password

quarkus.tls.trust-store.pem.certs

可信证书路径列表(Pem 格式)。

环境变量: QUARKUS_TLS_TRUST_STORE_PEM_CERTS

路径列表

 

quarkus.tls.trust-store.p12.path

信任存储文件的路径(P12 / PFX 格式)。

环境变量: QUARKUS_TLS_TRUST_STORE_P12_PATH

path

所需的 HEKETI Required

quarkus.tls.trust-store.p12.password

信任存储的密码。如果没有设置,则必须从凭证供应商检索密码。

环境变量: QUARKUS_TLS_TRUST_STORE_P12_PASSWORD

string

 

quarkus.tls.trust-store.p12.alias

信任存储的别名。

环境变量: QUARKUS_TLS_TRUST_STORE_P12_ALIAS

string

 

quarkus.tls.trust-store.p12.provider

信任存储的供应商。

环境变量: QUARKUS_TLS_TRUST_STORE_P12_PROVIDER

string

 

quarkus.tls.trust-store.jks.path

信任存储文件的路径(JKS 格式)。

环境变量: QUARKUS_TLS_TRUST_STORE_JKS_PATH

path

所需的 HEKETI Required

quarkus.tls.trust-store.jks.password

信任存储的密码。如果没有设置,则必须从凭证供应商检索密码。

环境变量: QUARKUS_TLS_TRUST_STORE_JKS_PASSWORD

string

 

quarkus.tls.trust-store.jks.alias

信任存储中密钥的别名。

环境变量: QUARKUS_TLS_TRUST_STORE_JKS_ALIAS

string

 

quarkus.tls.trust-store.jks.provider

信任存储的供应商。

环境变量: QUARKUS_TLS_TRUST_STORE_JKS_PROVIDER

string

 

quarkus.tls.trust-store.credentials-provider.name

io.quarkus.credentials.CredentialsProvider 中检索的 "credential" 存储桶(map key passwords)的名称。如果没有设置,则不会使用凭证供应商。

凭据提供程序提供了一种方式,可以检索密钥存储密码和别名密码。请注意,只有在配置中未设置密码时,才会使用凭证供应商。

环境变量: QUARKUS_TLS_TRUST_STORE_CREDENTIALS_PROVIDER_NAME

string

 

quarkus.tls.trust-store.credentials-provider.bean-name

提供凭据供应商的 bean 的名称。

该名称用于选择要使用的凭据提供程序。凭据提供程序必须公开为 CDI Bean,并且 @Named 注释设置为选定的配置的名称。

如果没有设置,则使用默认凭证供应商。

环境变量: QUARKUS_TLS_TRUST_STORE_CREDENTIALS_PROVIDER_BEAN_NAME

string

 

quarkus.tls.trust-store.credentials-provider.password-key

用于检索信任存储密码的密钥。

如果所选凭证供应商不包含配置的密钥,则不会检索密码。否则,检索的值用于打开信任存储。

环境变量: QUARKUS_TLS_TRUST_STORE_CREDENTIALS_PROVIDER_PASSWORD_KEY

string

password

quarkus.tls.cipher-suites

设置启用的密码套件的排序列表。如果未指定,则会从内置密码中选择合理的默认值。

当设置了套件时,它优先于正在使用的 SSLEngineOptions 定义的默认套件。

环境变量: QUARKUS_TLS_CIPHER_SUITES

字符串列表

 

quarkus.tls.protocols

设置启用的 TLS 协议的排序列表。

如果没有设置,则默认为 "TLSv1.3, TLSv1.2 "。支持以下协议: TLSv1、TLSv1.1、TLSv1.2、TLSv1.3。要仅启用 TLSv1.3,请将值设为 "TLSv1.3 "。

请注意,设置一个空列表,启用 TLS 无效。您必须至少有一个协议。

另外,此设置会替换默认的协议列表。

环境变量: QUARKUS_TLS_PROTOCOLS

字符串列表

TLSv1.3,TLSv1.2

quarkus.tls.handshake-timeout

TLS 握手阶段的超时时间。

如果没有设置,则默认为 10 秒。

环境变量: QUARKUS_TLS_HANDSHAKE_TIMEOUT

持续时间 5-4 Duration 格式

10S

quarkus.tls.alpn

启用应用程序协议协商(ALPN)。

应用程序-Layer 协议 Negotiation 是一个 TLS 扩展,允许在 TLS 握手期间使用客户端和服务器来协商它们将用于通信的协议。ALPN 通过允许客户端在建立 TLS 连接前向服务器指定首选应用程序协议来启用效率更高的通信。这有助于在 HTTP/2 等情形中使用多个协议,从而加快协议选择。

环境变量: QUARKUS_TLS_ALPN

布尔值

true

quarkus.tls.certificate-revocation-list

设置吊销证书列表(到文件的路径)。

证书撤销列表(CRL)是数字证书列表,已在其调度的过期日期前由发布证书颁发机构(CA)撤销。当证书被入侵时,不再需要或出于某种原因被视为无效,CA 将其添加到 CRL 中,以告知依赖方不再信任该证书。

允许两种格式: DER 和 PKCS#7 (也称为 P7B)。使用 DER 格式时,您必须传递 DER 编码的 CRL。使用 PKCS#7 格式时,您必须传递 PKCS""7 SignedData 对象,且唯一的重要字段是 crls

环境变量: QUARKUS_TLS_CERTIFICATE_REVOCATION_LIST

路径列表

 

quarkus.tls.trust-all

如果设置为 true,服务器将信任所有证书。

这对于测试非常有用,但不应在生产环境中使用。

环境变量: QUARKUS_TLS_TRUST_ALL

布尔值

false

quarkus.tls.hostname-verification-algorithm

应检查服务器的身份时要使用的主机名验证算法。应该是 HTTPS (默认)、LDAPSNONE

如果设置为 NONE,则不会验证主机名。

如果没有设置,则配置的扩展决定要使用的默认算法。例如,对于 HTTP,它将是"HTTPS"。对于 TCP,它可以依赖于协议。不过,建议将其设置为"HTTPS"或"LDAPS"。

环境变量: QUARKUS_TLS_HOSTNAME_VERIFICATION_ALGORITHM

string

 

quarkus.tls.reload-period

配置后,服务器将重新加载证书(例如,文件系统)并触发 CertificateUpdatedEvent (如果重新加载成功)

此属性将 period 配置为重新加载证书。未设置 IF,证书不会被自动重新载入。但是,应用程序仍然可以使用 io.quarkus.tls.TlsConfiguration Serialreload () 方法手动触发重新载入,然后手动触发 CertificateUpdatedEvent

fired 事件用于通知应用程序证书已更新,从而继续进行证书的实际切换。

环境变量: QUARKUS_TLS_RELOAD_PERIOD

持续时间 5-4 Duration 格式

 

quarkus.tls.key-store.pem."key-certs".key

密钥文件的路径(使用 PEM 格式)。

环境变量: QUARKUS_TLS_KEY_STORE_PEM__KEY_CERTS_KEY

path

所需的 HEKETI Required

quarkus.tls.key-store.pem."key-certs".cert

证书文件的路径(使用 PEM 格式)。

环境变量: QUARKUS_TLS_KEY_STORE_PEM__KEY_CERTS_CERT

path

所需的 HEKETI Required

quarkus.tls."tls-bucket-name".key-store.pem."key-certs".key

密钥文件的路径(使用 PEM 格式)。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_PEM__KEY_CERTS_KEY

path

所需的 HEKETI Required

quarkus.tls."tls-bucket-name".key-store.pem."key-certs".cert

证书文件的路径(使用 PEM 格式)。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_PEM__KEY_CERTS_CERT

path

所需的 HEKETI Required

quarkus.tls."tls-bucket-name".key-store.pem.order

密钥/证书文件的顺序,取决于 keyCerts 映射中的名称。

默认情况下,Quarkus 使用字典顺序对键进行排序。此属性允许您指定密钥/证书文件的顺序。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_PEM_ORDER

字符串列表

 

quarkus.tls."tls-bucket-name".key-store.p12.path

密钥存储文件的路径(P12 / PFX 格式)。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_P12_PATH

path

所需的 HEKETI Required

quarkus.tls."tls-bucket-name".key-store.p12.password

密钥存储的密码。如果没有设置,则必须从凭证提供程序检索密码。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_P12_PASSWORD

string

 

quarkus.tls."tls-bucket-name".key-store.p12.alias

密钥存储中私钥和证书的别名。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_P12_ALIAS

string

 

quarkus.tls."tls-bucket-name".key-store.p12.alias-password

密钥存储中别名的密码。如果没有设置,则从凭证提供程序检索密码。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_P12_ALIAS_PASSWORD

string

 

quarkus.tls."tls-bucket-name".key-store.p12.provider

密钥存储的提供商。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_P12_PROVIDER

string

 

quarkus.tls."tls-bucket-name".key-store.jks.path

密钥存储文件的路径(JKS 格式)。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_JKS_PATH

path

所需的 HEKETI Required

quarkus.tls."tls-bucket-name".key-store.jks.password

密钥存储的密码。如果没有设置,则必须从凭证提供程序检索密码。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_JKS_PASSWORD

string

 

quarkus.tls."tls-bucket-name".key-store.jks.alias

密钥存储中私钥和证书的别名。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_JKS_ALIAS

string

 

quarkus.tls."tls-bucket-name".key-store.jks.alias-password

密钥存储中别名的密码。如果没有设置,则可从凭据提供程序检索密码。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_JKS_ALIAS_PASSWORD

string

 

quarkus.tls."tls-bucket-name".key-store.jks.provider

密钥存储的提供商。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_JKS_PROVIDER

string

 

quarkus.tls."tls-bucket-name".key-store.sni

启用服务器名称调用(SNI)。

服务器名称 Indication (SNI)是一个 TLS 扩展,它允许客户端指定在 TLS 握手期间尝试连接到的主机名。这可让服务器在单个 IP 地址上为多个域提供不同的 SSL 证书,为虚拟主机场景提供安全通信。

启用此设置后,客户端在 TLS 握手期间指示服务器名称,允许服务器选择正确的证书。

使用 PEM 文件配置密钥存储时,必须指定多个 CRT/Key。使用 JKS 或 P12 文件配置密钥存储时,它会根据 SNI 主机名选择一个别名。在这种情况下,所有密钥存储密码和别名密码都必须相同(使用 密码和 alias-password 属性配置)。不要设置 alias 属性。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_SNI

布尔值

false

quarkus.tls."tls-bucket-name".key-store.credentials-provider.name

io.quarkus.credentials.CredentialsProvider 中检索的 "credential" 存储桶(map key passwords)的名称。如果没有设置,则不会使用凭证供应商。

凭据提供程序提供了一种方式,可以检索密钥存储密码和别名密码。请注意,只有在配置中未设置密码时,才会使用凭证供应商。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_CREDENTIALS_PROVIDER_NAME

string

 

quarkus.tls."tls-bucket-name".key-store.credentials-provider.bean-name

提供凭据供应商的 bean 的名称。

该名称用于选择要使用的凭据提供程序。凭据提供程序必须公开为 CDI Bean,并且 @Named 注释设置为选定的配置的名称。

如果没有设置,则使用默认凭证供应商。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_CREDENTIALS_PROVIDER_BEAN_NAME

string

 

quarkus.tls."tls-bucket-name".key-store.credentials-provider.password-key

用于检索密钥存储密码的密钥。

如果所选凭证供应商不支持该密钥,则不会检索密码。否则,检索的值用于打开密钥存储。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_CREDENTIALS_PROVIDER_PASSWORD_KEY

string

password

quarkus.tls."tls-bucket-name".key-store.credentials-provider.alias-password-key

用于检索密钥存储别名密码的密钥。

如果所选凭证供应商不包含密钥,则不会检索别名密码。否则,检索的值用于从密钥存储访问别名 私钥

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__KEY_STORE_CREDENTIALS_PROVIDER_ALIAS_PASSWORD_KEY

string

alias-password

quarkus.tls."tls-bucket-name".trust-store.pem.certs

可信证书路径列表(Pem 格式)。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_PEM_CERTS

路径列表

 

quarkus.tls."tls-bucket-name".trust-store.p12.path

信任存储文件的路径(P12 / PFX 格式)。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_P12_PATH

path

所需的 HEKETI Required

quarkus.tls."tls-bucket-name".trust-store.p12.password

信任存储的密码。如果没有设置,则必须从凭证供应商检索密码。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_P12_PASSWORD

string

 

quarkus.tls."tls-bucket-name".trust-store.p12.alias

信任存储的别名。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_P12_ALIAS

string

 

quarkus.tls."tls-bucket-name".trust-store.p12.provider

信任存储的供应商。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_P12_PROVIDER

string

 

quarkus.tls."tls-bucket-name".trust-store.jks.path

信任存储文件的路径(JKS 格式)。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_JKS_PATH

path

所需的 HEKETI Required

quarkus.tls."tls-bucket-name".trust-store.jks.password

信任存储的密码。如果没有设置,则必须从凭证供应商检索密码。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_JKS_PASSWORD

string

 

quarkus.tls."tls-bucket-name".trust-store.jks.alias

信任存储中密钥的别名。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_JKS_ALIAS

string

 

quarkus.tls."tls-bucket-name".trust-store.jks.provider

信任存储的供应商。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_JKS_PROVIDER

string

 

quarkus.tls."tls-bucket-name".trust-store.credentials-provider.name

io.quarkus.credentials.CredentialsProvider 中检索的 "credential" 存储桶(map key passwords)的名称。如果没有设置,则不会使用凭证供应商。

凭据提供程序提供了一种方式,可以检索密钥存储密码和别名密码。请注意,只有在配置中未设置密码时,才会使用凭证供应商。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_CREDENTIALS_PROVIDER_NAME

string

 

quarkus.tls."tls-bucket-name".trust-store.credentials-provider.bean-name

提供凭据供应商的 bean 的名称。

该名称用于选择要使用的凭据提供程序。凭据提供程序必须公开为 CDI Bean,并且 @Named 注释设置为选定的配置的名称。

如果没有设置,则使用默认凭证供应商。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_CREDENTIALS_PROVIDER_BEAN_NAME

string

 

quarkus.tls."tls-bucket-name".trust-store.credentials-provider.password-key

用于检索信任存储密码的密钥。

如果所选凭证供应商不包含配置的密钥,则不会检索密码。否则,检索的值用于打开信任存储。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_STORE_CREDENTIALS_PROVIDER_PASSWORD_KEY

string

password

quarkus.tls."tls-bucket-name".cipher-suites

设置启用的密码套件的排序列表。如果未指定,则会从内置密码中选择合理的默认值。

当设置了套件时,它优先于正在使用的 SSLEngineOptions 定义的默认套件。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__CIPHER_SUITES

字符串列表

 

quarkus.tls."tls-bucket-name".protocols

设置启用的 TLS 协议的排序列表。

如果没有设置,则默认为 "TLSv1.3, TLSv1.2 "。支持以下协议: TLSv1、TLSv1.1、TLSv1.2、TLSv1.3。要仅启用 TLSv1.3,请将值设为 "TLSv1.3 "。

请注意,设置一个空列表,启用 TLS 无效。您必须至少有一个协议。

另外,此设置会替换默认的协议列表。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME_PROTOCOLS

字符串列表

TLSv1.3,TLSv1.2

quarkus.tls."tls-bucket-name".handshake-timeout

TLS 握手阶段的超时时间。

如果没有设置,则默认为 10 秒。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__HANDSHAKE_TIMEOUT

持续时间 5-4 Duration 格式

10S

quarkus.tls."tls-bucket-name".alpn

启用应用程序协议协商(ALPN)。

应用程序-Layer 协议 Negotiation 是一个 TLS 扩展,允许在 TLS 握手期间使用客户端和服务器来协商它们将用于通信的协议。ALPN 通过允许客户端在建立 TLS 连接前向服务器指定首选应用程序协议来启用效率更高的通信。这有助于在 HTTP/2 等情形中使用多个协议,从而加快协议选择。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME_ALPN

布尔值

true

quarkus.tls."tls-bucket-name".certificate-revocation-list

设置吊销证书列表(到文件的路径)。

证书撤销列表(CRL)是数字证书列表,已在其调度的过期日期前由发布证书颁发机构(CA)撤销。当证书被入侵时,不再需要或出于某种原因被视为无效,CA 将其添加到 CRL 中,以告知依赖方不再信任该证书。

允许两种格式: DER 和 PKCS#7 (也称为 P7B)。使用 DER 格式时,您必须传递 DER 编码的 CRL。使用 PKCS#7 格式时,您必须传递 PKCS""7 SignedData 对象,且唯一的重要字段是 crls

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__CERTIFICATE_REVOCATION_LIST

路径列表

 

quarkus.tls."tls-bucket-name".trust-all

如果设置为 true,服务器将信任所有证书。

这对于测试非常有用,但不应在生产环境中使用。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__TRUST_ALL

布尔值

false

quarkus.tls."tls-bucket-name".hostname-verification-algorithm

应检查服务器的身份时要使用的主机名验证算法。应该是 HTTPS (默认)、LDAPSNONE

如果设置为 NONE,则不会验证主机名。

如果没有设置,则配置的扩展决定要使用的默认算法。例如,对于 HTTP,它将是"HTTPS"。对于 TCP,它可以依赖于协议。不过,建议将其设置为"HTTPS"或"LDAPS"。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME__HOSTNAME_VERIFICATION_ALGORITHM

string

 

quarkus.tls."tls-bucket-name".reload-period

配置后,服务器将重新加载证书(例如,文件系统)并触发 CertificateUpdatedEvent (如果重新加载成功)

此属性将 period 配置为重新加载证书。未设置 IF,证书不会被自动重新载入。但是,应用程序仍然可以使用 io.quarkus.tls.TlsConfiguration Serialreload () 方法手动触发重新载入,然后手动触发 CertificateUpdatedEvent

fired 事件用于通知应用程序证书已更新,从而继续进行证书的实际切换。

环境变量: QUARKUS_TLS__TLS_BUCKET_NAME_RELOAD_PERIOD

持续时间 5-4 Duration 格式

 
关于 Duration 格式

要写入持续时间值,请使用标准 java.time.Duration 格式。如需更多信息,请参阅 Duration#parse ()Java API 文档

您还可以使用简化的格式,从数字开始:

  • 如果值只是一个数字,它代表时间(以秒为单位)。
  • 如果值为数字,后跟 ms,代表时间(毫秒)。

在其他情况下,简化的格式被转换为 java.time.Duration 格式以进行解析:

  • 如果该值是一个数字,后跟 hms,则前缀为 PT
  • 如果值为数字,后跟 d,则会以 P 为前缀。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat