背景
在之前的文章中,配置了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