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

Vert.x SSL服务端客户端健康检测测试报SSLHandshakeException如何解决

解决方案

错误原因

你给WebClient配置的PemKeyCertOptions是用于双向SSL认证时客户端提交自身身份证书的配置,并非指定客户端需要信任的服务端自签名证书,因此客户端依旧使用JVM默认信任库校验服务端的自签名证书,自然会触发PKIX路径校验失败的错误。

可选方案

方案1:测试环境直接跳过证书校验(最便捷,单元测试优先推荐)

单元测试场景不需要严格的证书校验,直接在WebClient配置中开启信任所有证书即可,无需修改任何JVM配置,所有拉取代码的开发者可以直接运行:

WebClientOptions options = new WebClientOptions()
        .setSsl(true)
        .setTrustAll(true); // 仅测试环境使用,生产环境禁止开启
WebClient client = WebClient.create(vertx, options);

方案2:显式配置客户端信任指定自签名证书(无需修改全局JVM配置)

如果需要保留证书校验逻辑,可以通过PemTrustOptions指定客户端信任你的自签名证书,不需要修改JVM全局信任库,只要将cert.pem放在项目中随代码提交,所有开发者拉取后即可直接运行:

WebClientOptions options = new WebClientOptions()
        .setSsl(true)
        .setPemTrustOptions(new PemTrustOptions()
                .addCertPath("cert.pem")); // 仅信任你指定的自签名证书
WebClient client = WebClient.create(vertx, options);

方案3:导入证书到JVM全局信任库(不推荐用于单元测试)

该方案确实可以解决问题,但操作成本极高:每个开发者都需要手动将证书导入到自己本地JDK的jre/lib/security/cacerts信任库中,更换JDK版本后还需要重新操作,完全不适合单元测试场景,仅在生产环境客户端对接固定自签名证书服务端时可以考虑使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:36:01