NettyChannelBuilder 自签名证书 overrideAuthority 的使用记录

本文记录了在使用NettyChannelBuilder时遇到的自签名证书问题,由于证书CN与访问地址不匹配导致SSLHandshakeException。通过研究发现,需要在证书中添加subjectAltName字段,并使用overrideAuthority方法来解决这个问题。经过实验,最终成功实现了Android客户端与自签名证书服务器的grpc加密通信。
摘要由CSDN通过智能技术生成

背景

在之前的文章中,配置了golang服务端,python客户端的自签名grpc加密通道。在同样配置安卓客户端的情况下,却碰到了问题.

NettyChannelBuilder.forAddress("192.168.50.153", 56651)
            .sslContext(GrpcSslContexts.forClient().trustManager(crt).build()).build()

会报如下异常:

javax.net.ssl.SSLHandshakeException: No subjectAltNames on the certificate match

这错误应该是由于我们的自签名证书,CN配的是test.com,但当前访问的网址却是192.168.50.153。两者不匹配,故而根据tls规范报错.

联想到python的grpc客户端,只要配置

options=(('grpc.ssl_target_name_override', "test.com",),)

就能绕过hostname verification。于是,通过不懈的谷哥,在grpc-java中,找到了一个类似的overrideAuthority 方法

初步尝试

立马仿照python,将CN传入overrideAuthority中尝试:

channel = NettyChannelBuilder.forAd
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值