You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在配置TLS 1.3的Jetty服务中启用certificate_authorities扩展

问题根因

Jetty 11 及 JDK 11.0.9+ 版本默认关闭了 TLS 1.3 握手阶段受信任 CA 列表的发送逻辑,目的是压缩握手包体积,需要手动修改配置开启该能力。

操作步骤

1. 配置JVM参数开启TLS 1.3 CA列表发送能力

JDK 11 默认禁用了 TLS 1.3 下服务端发送 CA 列表的特性,两种配置方式二选一即可:

  • 全局配置:修改JRE安装目录下的conf/security/java.security文件,将jdk.tls.server.certificateAuthorities配置项的值改为true
  • 服务单独配置:启动Jetty时添加JVM启动参数-Djdk.tls.server.certificateAuthorities=true,优先级高于全局配置

2. 配置Jetty开启CA列表发送

独立部署Jetty场景

修改Jetty配置目录下的start.d/ssl.ini或start.ini文件,添加以下两行配置:

jetty.sslContext.trustCertificatesRequired=true
jetty.sslContext.sendCertificateAuthorities=true

如果使用XML格式配置SslContextFactory,在对应的配置节点下新增属性:

<Set name="sendCertificateAuthorities">true</Set>

嵌入式Jetty场景

初始化SslContextFactory.Server实例时主动调用对应方法开启配置,示例代码:

SslContextFactory.Server sslContextFactory = new SslContextFactory.Server();
// 原有keystore、truststore、客户端认证配置保持不变
sslContextFactory.setNeedClientAuth(true);
// 新增开启发送受信任CA列表的配置
sslContextFactory.setSendCertificateAuthorities(true);

3. 验证配置生效

重启Jetty服务后,执行以下openssl命令验证:
openssl s_client -connect 你的服务域名:端口 -tls1_3
查看输出内容中的Acceptable client certificate CA names段落,如果能正常展示你配置的信任CA的DN信息,说明配置已生效。

注意事项

  • 若信任库中CA条目较多,会导致TLS握手包体积变大,可能触发MTU分片,需结合实际业务场景权衡
  • 需确保当前使用的Jetty版本不低于11.0.1,否则TLS 1.3下该配置不生效

内容的提问来源于stack exchange,提问作者mlapeyre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:39:04