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

Java 11应用OKHttp3调用HTTPS接口Azure环境验证失败求助

问题分析与解决方案

从异常信息来看,你的Java客户端请求myhostname.com时,服务器返回的却是*.azureedge.net的SSL证书,且该证书的Subject Alternative Names(SAN)列表中不包含myhostname.com,导致OKHttp的主机名验证失败,抛出SSLPeerUnverifiedException。Curl能正常访问的原因可能是请求路径/解析逻辑与Java客户端存在差异,或者Curl使用的验证策略宽松(比如意外跳过了主机名验证)。

以下是具体排查和解决步骤:

1. 确认域名解析与证书匹配情况

  • 用nslookup myhostname.com或dig myhostname.com查看域名解析的IP地址,确认是否指向Azure Edge的节点。如果API确实部署在Azure IoT Hub/CDN后,需要API提供商将myhostname.com添加到证书的SAN列表中——这是根本解决方法,因为当前证书的SAN只包含Azure相关域名,无法匹配你访问的自定义域名。
  • 直接用openssl s_client -connect myhostname.com:443查看返回的证书详情,确认证书的SAN字段是否包含myhostname.com。如果返回的证书确实是*.azureedge.net,说明API端的SSL配置存在问题,必须联系提供商修正。

2. 排查Java客户端的请求逻辑

  • 检查OKHttp是否自动重定向到了azureedge.net域名:可以添加日志拦截器打印请求和响应的URL,确认请求的最终目标地址。
  • 确认是否存在本地DNS缓存导致解析错误:可以重启Java应用,或修改JVM参数禁用DNS缓存(-Dsun.net.inetaddr.ttl=0)后重试。

3. 临时调试(生产环境禁用)

如果需要临时验证问题根源,可以临时自定义OKHttp的HostnameVerifier跳过特定主机名的验证(仅用于调试,绝对不能用于生产):

OkHttpClient client = new OkHttpClient.Builder()
    .hostnameVerifier((requestedHost, sslSession) -> {
        // 仅允许myhostname.com匹配当前返回的azureedge证书
        if (!requestedHost.equals("myhostname.com")) {
            return false;
        }
        try {
            X509Certificate cert = (X509Certificate) sslSession.getPeerCertificates()[0];
            String certCN = cert.getSubjectX500Principal().getName()
                .split("CN=")[1].split(",")[0].trim();
            return certCN.equals("*.azureedge.net");
        } catch (SSLException e) {
            return false;
        }
    })
    .build();

4. 确认Java信任库配置

虽然当前异常是主机名验证失败而非证书信任问题,但可以检查Java 11默认的cacerts信任库是否包含GeoTrust Global TLS RSA4096 SHA256 2022 CA1根证书:

  • 执行命令keytool -list -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit | grep "GeoTrust"
  • 如果不存在,需要下载该根证书并导入到信任库:
    keytool -importcert -file geotrust-ca.crt -alias geotrust-2022-ca1 -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:55:23