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
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
在大多数情况下,您只需要一个由证书和私钥组成的对。即使证书是证书链的一部分,它只包含一个与最终用户证书对应的私钥。
当配置了多个对时,选择配置的证书和私钥对基于 Server Name Indication (SNI)。客户端将客户端要连接到的服务器的名称发送到,服务器选择相应的证书和私钥对。要使用这个功能,请确保客户端和服务器上都启用了 SNI。
当配置多个密钥对或证书对时,服务器默认以名称的字典顺序执行配置的对,如在上例中使用 store.pem.a 和 store.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
quarkus.tls.key-store.p12.path=server-keystore.p12
quarkus.tls.key-store.p12.password=secret
.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
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-passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 或者,使用 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
quarkus.tls.key-store.jks.path=server-keystore.jks
quarkus.tls.key-store.jks.password=secret
.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
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-passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 或者,使用 SNI 选择适当的证书和私钥。请注意,所有密钥都必须使用相同的密码。
1.3.1.4. SNI 复制链接链接已复制到粘贴板!
服务器名称 Indication (SNI)是一个 TLS 扩展,使客户端能够指定在 TLS 握手期间尝试连接的主机名。SNI 可让服务器为单个 IP 地址上的多个域提供不同的 TLS 证书,这有助于为虚拟主机场景提供安全通信。
启用 SNI:
quarkus.tls.key-store.sni=true # Disabled by default
quarkus.tls.key-store.sni=true # Disabled by default
启用 SNI 后,客户端表示 TLS 握手期间的服务器名称,允许服务器选择适当的证书:
- 使用 PEM 文件配置密钥存储时,必须提供多个证书(CRT)和密钥文件。CRT 是 X.509 证书文件的一个通用文件扩展,通常采用 PEM (Privacy-Enhanced Mail)格式。这些文件包含公共证书。
- 使用 JKS 或 P12 文件配置密钥存储时,服务器会根据 TLS 握手期间客户端提供的 SNI 主机名选择适当的证书。服务器使用存储在密钥存储中的证书中配置的通用名称(CN)或主题替代名称(SAN)匹配 SNI 主机名。所有密钥存储和别名密码都必须相同。
1.3.1.5. 凭证供应商 复制链接链接已复制到粘贴板!
您可以使用凭据提供程序,而不是在配置中传递密钥存储密码和别名密码。
凭据提供程序提供检索密钥存储和别名密码的方式。请注意,只有在配置中未设置密码或别名密码时,才会使用凭证供应商。
配置凭证供应商:
凭证供应商只能与 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
quarkus.tls.trust-store.pem.certs=ca.crt,ca2.pem
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
quarkus.tls.trust-store.p12.path=client-truststore.p12
quarkus.tls.trust-store.p12.password=password
quarkus.tls.trust-store.p12.alias=my-alias
.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
quarkus.tls.trust-store.jks.path=client-truststore.jks
quarkus.tls.trust-store.jks.password=password
quarkus.tls.trust-store.jks.alias=my-alias
.jks 文件受密码保护,因此您需要提供密码以打开信任存储。但是,与密钥存储不同,别名不需要密码,因为它包含公共证书,而不是私钥。
1.3.2.4. 凭证供应商 复制链接链接已复制到粘贴板!
您可以使用凭证供应商,而不是在配置中传递信任存储密码。凭证供应商允许您检索密码和其他凭证。请注意,只有在配置中未设置密码时,才会使用凭证供应商。
配置凭证供应商:
凭证供应商只能与 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
quarkus.tls.cipher-suites=TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384
1.3.3.2. TLS 协议版本 复制链接链接已复制到粘贴板!
TLS 协议版本是 TLS 握手期间可以使用的协议列表。启用的 TLS 协议版本以用逗号分开的排序列表的形式指定。相关的配置属性是 quarkus.tls.protocols (或 quarkus.tls.<name>.protocols 用于命名 TLS 配置)。如果没有配置,则默认为 TLSv1.3,TLSv1.2。
可用的选项有 TLSv1、TLSv1.1、TLSv1.2 和 TLSv1.3。
例如,仅启用 TLSv1.3 :
quarkus.tls.protocols=TLSv1.3
quarkus.tls.protocols=TLSv1.3
1.3.3.3. 握手超时 复制链接链接已复制到粘贴板!
当建立 TLS 连接时,握手阶段是第一步。在此阶段,客户端和服务器交换信息来建立连接,这通常包括密码套件、TLS 协议版本和验证。
为握手阶段配置超时:
quarkus.tls.handshake-timeout=10S # Default.
quarkus.tls.handshake-timeout=10S # Default.
1.3.3.4. ALPN 复制链接链接已复制到粘贴板!
应用程序协议协商(ALPN)是一种 TLS 扩展,它允许客户端和服务器协商它们将在 TLS 握手期间进行通信的协议。ALPN 通过允许客户端在建立 TLS 连接前向服务器指示首选应用程序协议来启用效率更高的通信。
这有助于在 HTTP/2 等情形中使用多个协议,从而加快协议选择。
ALPN 默认启用。
要禁用它:
quarkus.tls.alpn=false
quarkus.tls.alpn=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告不建议在非预期的情况下禁用 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
quarkus.tls.certificate-revocation-list=ca.crl, ca2.crl
1.3.3.6. 信任所有证书和主机名验证 复制链接链接已复制到粘贴板!
您可以将 TLS 连接配置为信任所有证书,并禁用主机名验证。请注意,它们是两个不同的进程:
- 信任所有证书都忽略证书验证,因此所有证书都是可信的证书。此方法可用于使用自签名证书进行测试,但不应在生产环境中使用。
- 主机名验证是验证服务器身份的过程。
它对防止中间人攻击很有用,并且通常默认为 HTTPS 或 LDAPS。
不应该在生产环境中使用这两个属性。
信任所有证书:
quarkus.tls.trust-all=true
quarkus.tls.trust-all=true
禁用主机名验证:
quarkus.tls.hostname-verification-algorithm=NONE
quarkus.tls.hostname-verification-algorithm=NONE
1.3.4. 配置参考 复制链接链接已复制到粘贴板!
下表列出了支持的属性:
build 时修复的 - 配置属性在构建时修复 - 所有其他配置属性在运行时可覆盖
| 配置属性 | 类型 | default |
|
在构建时修复了
设置为
环境变量: | 布尔值 |
|
|
密钥/证书文件的顺序,取决于 默认情况下,Quarkus 使用字典顺序对键进行排序。此属性允许您指定密钥/证书文件的顺序。
环境变量: | 字符串列表 | |
|
密钥存储文件的路径(P12 / PFX 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
密钥存储的密码。如果没有设置,则必须从凭证提供程序检索密码。
环境变量: | string | |
|
密钥存储中私钥和证书的别名。
环境变量: | string | |
|
密钥存储中别名的密码。如果没有设置,则从凭证提供程序检索密码。
环境变量: | string | |
|
密钥存储的提供商。
环境变量: | string | |
|
密钥存储文件的路径(JKS 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
密钥存储的密码。如果没有设置,则必须从凭证提供程序检索密码。
环境变量: | string | |
|
密钥存储中私钥和证书的别名。
环境变量: | string | |
|
密钥存储中别名的密码。如果没有设置,则可从凭据提供程序检索密码。
环境变量: | string | |
|
密钥存储的提供商。
环境变量: | string | |
|
启用服务器名称调用(SNI)。 服务器名称 Indication (SNI)是一个 TLS 扩展,它允许客户端指定在 TLS 握手期间尝试连接到的主机名。这可让服务器在单个 IP 地址上为多个域提供不同的 SSL 证书,为虚拟主机场景提供安全通信。 启用此设置后,客户端在 TLS 握手期间指示服务器名称,允许服务器选择正确的证书。
使用 PEM 文件配置密钥存储时,必须指定多个 CRT/Key。使用 JKS 或 P12 文件配置密钥存储时,它会根据 SNI 主机名选择一个别名。在这种情况下,所有密钥存储密码和别名密码都必须相同(使用
环境变量: | 布尔值 |
|
|
从 凭据提供程序提供了一种方式,可以检索密钥存储密码和别名密码。请注意,只有在配置中未设置密码时,才会使用凭证供应商。
环境变量: | string | |
|
提供凭据供应商的 bean 的名称。
该名称用于选择要使用的凭据提供程序。凭据提供程序必须公开为 CDI Bean,并且 如果没有设置,则使用默认凭证供应商。
环境变量: | string | |
|
用于检索密钥存储密码的密钥。 如果所选凭证供应商不支持该密钥,则不会检索密码。否则,检索的值用于打开密钥存储。
环境变量: | string |
|
|
用于检索密钥存储别名密码的密钥。
如果所选凭证供应商不包含密钥,则不会检索别名密码。否则,检索的值用于从密钥存储访问别名
环境变量: | string |
|
|
可信证书路径列表(Pem 格式)。
环境变量: | 路径列表 | |
|
信任存储文件的路径(P12 / PFX 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
信任存储的密码。如果没有设置,则必须从凭证供应商检索密码。
环境变量: | string | |
|
信任存储的别名。
环境变量: | string | |
|
信任存储的供应商。
环境变量: | string | |
|
信任存储文件的路径(JKS 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
信任存储的密码。如果没有设置,则必须从凭证供应商检索密码。
环境变量: | string | |
|
信任存储中密钥的别名。
环境变量: | string | |
|
信任存储的供应商。
环境变量: | string | |
|
从 凭据提供程序提供了一种方式,可以检索密钥存储密码和别名密码。请注意,只有在配置中未设置密码时,才会使用凭证供应商。
环境变量: | string | |
|
提供凭据供应商的 bean 的名称。
该名称用于选择要使用的凭据提供程序。凭据提供程序必须公开为 CDI Bean,并且 如果没有设置,则使用默认凭证供应商。
环境变量: | string | |
|
用于检索信任存储密码的密钥。 如果所选凭证供应商不包含配置的密钥,则不会检索密码。否则,检索的值用于打开信任存储。
环境变量: | string |
|
|
设置启用的密码套件的排序列表。如果未指定,则会从内置密码中选择合理的默认值。
当设置了套件时,它优先于正在使用的
环境变量: | 字符串列表 | |
|
设置启用的 TLS 协议的排序列表。
如果没有设置,则默认为 请注意,设置一个空列表,启用 TLS 无效。您必须至少有一个协议。 另外,此设置会替换默认的协议列表。
环境变量: | 字符串列表 |
|
|
TLS 握手阶段的超时时间。 如果没有设置,则默认为 10 秒。
环境变量: |
| |
|
启用应用程序协议协商(ALPN)。 应用程序-Layer 协议 Negotiation 是一个 TLS 扩展,允许在 TLS 握手期间使用客户端和服务器来协商它们将用于通信的协议。ALPN 通过允许客户端在建立 TLS 连接前向服务器指定首选应用程序协议来启用效率更高的通信。这有助于在 HTTP/2 等情形中使用多个协议,从而加快协议选择。
环境变量: | 布尔值 |
|
|
设置吊销证书列表(到文件的路径)。 证书撤销列表(CRL)是数字证书列表,已在其调度的过期日期前由发布证书颁发机构(CA)撤销。当证书被入侵时,不再需要或出于某种原因被视为无效,CA 将其添加到 CRL 中,以告知依赖方不再信任该证书。
允许两种格式: DER 和 PKCS#7 (也称为 P7B)。使用 DER 格式时,您必须传递 DER 编码的 CRL。使用 PKCS#7 格式时,您必须传递 PKCS""7
环境变量: | 路径列表 | |
|
如果设置为 这对于测试非常有用,但不应在生产环境中使用。
环境变量: | 布尔值 |
|
|
应检查服务器的身份时要使用的主机名验证算法。应该是
如果设置为 如果没有设置,则配置的扩展决定要使用的默认算法。例如,对于 HTTP,它将是"HTTPS"。对于 TCP,它可以依赖于协议。不过,建议将其设置为"HTTPS"或"LDAPS"。
环境变量: | string | |
|
配置后,服务器将重新加载证书(例如,文件系统)并触发
此属性将 period 配置为重新加载证书。未设置 IF,证书不会被自动重新载入。但是,应用程序仍然可以使用 fired 事件用于通知应用程序证书已更新,从而继续进行证书的实际切换。
环境变量: | ||
|
密钥文件的路径(使用 PEM 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
证书文件的路径(使用 PEM 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
密钥文件的路径(使用 PEM 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
证书文件的路径(使用 PEM 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
密钥/证书文件的顺序,取决于 默认情况下,Quarkus 使用字典顺序对键进行排序。此属性允许您指定密钥/证书文件的顺序。
环境变量: | 字符串列表 | |
|
密钥存储文件的路径(P12 / PFX 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
密钥存储的密码。如果没有设置,则必须从凭证提供程序检索密码。
环境变量: | string | |
|
密钥存储中私钥和证书的别名。
环境变量: | string | |
|
密钥存储中别名的密码。如果没有设置,则从凭证提供程序检索密码。
环境变量: | string | |
|
密钥存储的提供商。
环境变量: | string | |
|
密钥存储文件的路径(JKS 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
密钥存储的密码。如果没有设置,则必须从凭证提供程序检索密码。
环境变量: | string | |
|
密钥存储中私钥和证书的别名。
环境变量: | string | |
|
密钥存储中别名的密码。如果没有设置,则可从凭据提供程序检索密码。
环境变量: | string | |
|
密钥存储的提供商。
环境变量: | string | |
|
启用服务器名称调用(SNI)。 服务器名称 Indication (SNI)是一个 TLS 扩展,它允许客户端指定在 TLS 握手期间尝试连接到的主机名。这可让服务器在单个 IP 地址上为多个域提供不同的 SSL 证书,为虚拟主机场景提供安全通信。 启用此设置后,客户端在 TLS 握手期间指示服务器名称,允许服务器选择正确的证书。
使用 PEM 文件配置密钥存储时,必须指定多个 CRT/Key。使用 JKS 或 P12 文件配置密钥存储时,它会根据 SNI 主机名选择一个别名。在这种情况下,所有密钥存储密码和别名密码都必须相同(使用
环境变量: | 布尔值 |
|
|
从 凭据提供程序提供了一种方式,可以检索密钥存储密码和别名密码。请注意,只有在配置中未设置密码时,才会使用凭证供应商。
环境变量: | string | |
|
提供凭据供应商的 bean 的名称。
该名称用于选择要使用的凭据提供程序。凭据提供程序必须公开为 CDI Bean,并且 如果没有设置,则使用默认凭证供应商。
环境变量: | string | |
|
用于检索密钥存储密码的密钥。 如果所选凭证供应商不支持该密钥,则不会检索密码。否则,检索的值用于打开密钥存储。
环境变量: | string |
|
|
用于检索密钥存储别名密码的密钥。
如果所选凭证供应商不包含密钥,则不会检索别名密码。否则,检索的值用于从密钥存储访问别名
环境变量: | string |
|
|
可信证书路径列表(Pem 格式)。
环境变量: | 路径列表 | |
|
信任存储文件的路径(P12 / PFX 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
信任存储的密码。如果没有设置,则必须从凭证供应商检索密码。
环境变量: | string | |
|
信任存储的别名。
环境变量: | string | |
|
信任存储的供应商。
环境变量: | string | |
|
信任存储文件的路径(JKS 格式)。
环境变量: | path | 所需的 HEKETI Required |
|
信任存储的密码。如果没有设置,则必须从凭证供应商检索密码。
环境变量: | string | |
|
信任存储中密钥的别名。
环境变量: | string | |
|
信任存储的供应商。
环境变量: | string | |
|
从 凭据提供程序提供了一种方式,可以检索密钥存储密码和别名密码。请注意,只有在配置中未设置密码时,才会使用凭证供应商。
环境变量: | string | |
|
提供凭据供应商的 bean 的名称。
该名称用于选择要使用的凭据提供程序。凭据提供程序必须公开为 CDI Bean,并且 如果没有设置,则使用默认凭证供应商。
环境变量: | string | |
|
用于检索信任存储密码的密钥。 如果所选凭证供应商不包含配置的密钥,则不会检索密码。否则,检索的值用于打开信任存储。
环境变量: | string |
|
|
设置启用的密码套件的排序列表。如果未指定,则会从内置密码中选择合理的默认值。
当设置了套件时,它优先于正在使用的
环境变量: | 字符串列表 | |
|
设置启用的 TLS 协议的排序列表。
如果没有设置,则默认为 请注意,设置一个空列表,启用 TLS 无效。您必须至少有一个协议。 另外,此设置会替换默认的协议列表。
环境变量: | 字符串列表 |
|
|
TLS 握手阶段的超时时间。 如果没有设置,则默认为 10 秒。
环境变量: |
| |
|
启用应用程序协议协商(ALPN)。 应用程序-Layer 协议 Negotiation 是一个 TLS 扩展,允许在 TLS 握手期间使用客户端和服务器来协商它们将用于通信的协议。ALPN 通过允许客户端在建立 TLS 连接前向服务器指定首选应用程序协议来启用效率更高的通信。这有助于在 HTTP/2 等情形中使用多个协议,从而加快协议选择。
环境变量: | 布尔值 |
|
|
设置吊销证书列表(到文件的路径)。 证书撤销列表(CRL)是数字证书列表,已在其调度的过期日期前由发布证书颁发机构(CA)撤销。当证书被入侵时,不再需要或出于某种原因被视为无效,CA 将其添加到 CRL 中,以告知依赖方不再信任该证书。
允许两种格式: DER 和 PKCS#7 (也称为 P7B)。使用 DER 格式时,您必须传递 DER 编码的 CRL。使用 PKCS#7 格式时,您必须传递 PKCS""7
环境变量: | 路径列表 | |
|
如果设置为 这对于测试非常有用,但不应在生产环境中使用。
环境变量: | 布尔值 |
|
|
应检查服务器的身份时要使用的主机名验证算法。应该是
如果设置为 如果没有设置,则配置的扩展决定要使用的默认算法。例如,对于 HTTP,它将是"HTTPS"。对于 TCP,它可以依赖于协议。不过,建议将其设置为"HTTPS"或"LDAPS"。
环境变量: | string | |
|
配置后,服务器将重新加载证书(例如,文件系统)并触发
此属性将 period 配置为重新加载证书。未设置 IF,证书不会被自动重新载入。但是,应用程序仍然可以使用 fired 事件用于通知应用程序证书已更新,从而继续进行证书的实际切换。
环境变量: |
要写入持续时间值,请使用标准 java.time.Duration 格式。如需更多信息,请参阅 Duration#parse ()Java API 文档。
您还可以使用简化的格式,从数字开始:
- 如果值只是一个数字,它代表时间(以秒为单位)。
-
如果值为数字,后跟
ms,代表时间(毫秒)。
在其他情况下,简化的格式被转换为 java.time.Duration 格式以进行解析:
-
如果该值是一个数字,后跟
h、m或s,则前缀为PT。 -
如果值为数字,后跟
d,则会以P为前缀。