内容提要
JDK 28新增功能:jdk.TLSHandshake JFR事件现可记录TLS握手期间协商的命名组信息(如X25519MLKEM768),帮助分析密钥交换细节。该事件默认禁用,需通过JFR配置或启动参数启用,并用jfr print查看。Oracle鼓励用户下载早期版本测试并反馈。
延伸解读
默认关闭,需显式启用
jdk.TLSHandshake事件在JDK默认的default.jfc和profile.jfc配置中默认禁用,必须通过JFR配置文件、jfr configure命令或启动参数显式启用。例如,可使用jfr configure jdk.TLSHandshake#enabled=true或启动时添加-XX:StartFlightRecording:settings=default,duration=60s,+jdk.TLSHandshake#enabled=true。启用后,事件才会记录TLS握手细节,包括新增的命名组
新增命名组字段的用途
JDK 28为jdk.TLSHandshake事件新增了namedGroup字段,用于记录TLS握手期间协商的密钥交换组,如示例中的X25519MLKEM768。该信息有助于分析连接使用的密钥交换算法,尤其在混合后量子密码学场景下,可确认是否采用了后量子安全组。通过jfr print命令可查看该字段,便于安全审计和故障排查。
如何查看事件详情
启用事件并录制后,可使用jfr print --events "jdk.TLSHandshake" recording.jfr命令查看事件内容。输出包含时间戳、协议版本、密码套件、命名组、证书ID及堆栈跟踪等字段。示例输出展示了TLSv1.3和TLS_AES_128_GCM_SHA256,以及命名组X25519MLKEM768,帮助理解握手过程。
Q&A
JDK 28中jdk.TLSHandshake JFR事件新增了什么功能?
JDK 28中,jdk.TLSHandshake JFR事件新增了记录TLS握手期间协商的命名组信息(如X25519MLKEM768)的功能,帮助分析密钥交换细节。
如何启用jdk.TLSHandshake JFR事件?
该事件默认禁用,可以通过JFR配置文件(*.jfc)、jfr configure命令或启动参数启用。例如:使用jfr configure jdk.TLSHandshake#enabled=true,或在启动时使用-XX:StartFlightRecording:settings=default,duration=60s,+jdk.TLSHandshake#enabled=true。
如何查看jdk.TLSHandshake事件中记录的命名组信息?
使用jfr print命令,例如:jfr print --events "jdk.TLSHandshake" recording.jfr,输出中会包含namedGroup字段,显示协商的命名组。
jdk.TLSHandshake事件默认是启用还是禁用?
默认禁用。在JDK自带的default.jfc和profile.jfc配置中,该事件是禁用的,需要显式启用。
jdk.TLSHandshake事件记录哪些信息?
该事件记录成功TLS握手的详细信息,包括协议版本、密码套件、命名组(如X25519MLKEM768)、证书ID、事件线程和堆栈跟踪等。
JDK 28中如何反馈关于此新功能的意见?
可以下载JDK 28早期访问版本进行测试,并通过OpenJDK security-dev邮件列表(需注册)分享反馈。