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

如何确认gRPC当前使用的TLS版本?

查看gRPC使用的TLS版本的几种方法

1. 开启gRPC Netty调试日志

gRPC基于Netty的传输层会在DEBUG级别输出TLS握手细节。你可以通过以下方式开启日志:

  • 编写logging.properties配置文件,添加:
    io.grpc.netty.level=FINEST
    
  • 启动应用时指定该配置文件:
    -Djava.util.logging.config.file=path/to/logging.properties
    

启动后在日志中搜索TLS handshake completed相关条目,其中会明确显示协商后的TLS版本(如TLSv1.2)。

2. 自定义Netty拦截器捕获TLS版本

通过编程方式添加自定义拦截器,在连接建立时获取TLS会话信息:

import io.grpc.netty.NettyChannelBuilder;
import io.netty.handler.ssl.SslHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

public class TlsVersionLogger extends ChannelInboundHandlerAdapter {
    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        SslHandler sslHandler = ctx.pipeline().get(SslHandler.class);
        if (sslHandler != null) {
            String negotiatedTlsVersion = sslHandler.engine().getSession().getProtocol();
            System.out.println("当前使用的TLS版本: " + negotiatedTlsVersion);
        }
        super.channelActive(ctx);
    }
}

// 构建gRPC Channel时注入拦截器
NettyChannelBuilder.forTarget("grpc-server-address:port")
    .sslContext(GrpcSslContexts.forClient().build())
    .intercept(new TlsVersionLogger())
    .build();

应用运行后,客户端与服务器建立连接时会打印出协商好的TLS版本。

3. 启用JVM全局TLS调试日志

直接添加JVM参数开启全量TLS握手日志:

-Djavax.net.debug=ssl:handshake

启动后控制台会输出详细的TLS握手流程,在Server Hello阶段的Protocol字段中可查看最终使用的TLS版本。

4. 抓包分析(Wireshark)

用Wireshark捕获gRPC客户端与服务器的通信流量,过滤tls协议,找到Server Hello报文,其Protocol Version字段会显示协商后的TLS版本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 07:57:39