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

gRPC配置SSL后连接报错:未找到匹配IP的使用者可选名称问题求助

问题根因

你生成证书时的*主体备用名称(SAN)*类型配置错误:IP地址需要使用IP.前缀定义,你错误使用了仅适用于域名的DNS.前缀,导致Java SSL栈无法识别到证书中匹配的IP条目。

解决方案

方案1:重新生成正确配置的证书(推荐,生产环境可用)

使用以下命令重新生成证书,将IP地址的SAN类型修正为IP.1:

openssl req -x509 -newkey rsa:4096 -keyout ./grpc-server/src/main/resources/my-private-key.pem -out ./grpc-server/src/main/resources/my-public-key-cert.pem -days 365 -nodes -subj "/CN=192.168.88.132" -addext "subjectAltName = IP.1:192.168.88.132, DNS.1:localhost"

生成完成后可以用以下命令验证证书SAN配置是否正确:

openssl x509 -in ./grpc-server/src/main/resources/my-public-key-cert.pem -text -noout | grep -A 1 "Subject Alternative Name"

正确输出会包含如下内容:

X509v3 Subject Alternative Name: 
    IP Address:192.168.88.132, DNS:localhost

将新生成的证书替换服务端和客户端的旧证书,重启服务即可正常连接。

方案2:临时跳过主机名校验(仅测试环境使用,生产环境禁止)

如果只是本地临时测试不想重新生成证书,可以在客户端构建Channel时添加跳过主机名校验的配置,修改客户端代码如下:

ManagedChannel channel = NettyChannelBuilder.forTarget("192.168.88.132:5555")
                .sslContext(context)
                .skipHostVerification() // 新增该行,跳过主机名校验
                .build();

注意:该配置会跳过SSL证书的主机名匹配校验,存在中间人攻击风险,绝对不允许在生产环境使用。

内容的提问来源于stack exchange,提问作者Нуркасым Абилов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:27:03