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

Java环境下WebSocket连接禁用SSL证书校验的实现咨询

注意:禁用SSL证书校验会带来严重的中间人攻击风险,仅可用于测试环境,生产环境禁止使用该配置

实现步骤

  1. 首先实现信任所有证书的SSL上下文工具方法,以及无校验的主机名验证器
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
import java.security.cert.X509Certificate;

// 生成跳过证书校验的SSL上下文
private static SSLContext getUnsafeSSLContext() throws Exception {
    X509TrustManager trustAllManager = new X509TrustManager() {
        @Override
        public void checkClientTrusted(X509Certificate[] x509Certificates, String s) {}
        @Override
        public void checkServerTrusted(X509Certificate[] x509Certificates, String s) {}
        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[0];
        }
    };
    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(null, new TrustManager[]{trustAllManager}, null);
    return sslContext;
}

// 生成跳过主机名校验的验证器
private static HostnameVerifier getUnsafeHostnameVerifier() {
    return (hostname, sslSession) -> true;
}
  1. 修改原有WebSocket连接逻辑,在调用connect()之前注入无校验的SSL配置

注:你原有代码存在笔误 client.setServerWebSocketUrlPathsockPath); 已修正为 client.setServerWebSocketUrlPath(sockPath);

socketUri = new URI(sockPath);
Map<String, String> head = new HashMap<>();
head.put("Authorization", "Bearer ".concat(headerToken));
client = new WebSocket(websocketUri, head);
client.setServerWebSocketUrlPath(sockPath);

// 注入无校验SSL配置
SSLContext unsafeSslContext = getUnsafeSSLContext();
client.setSocketFactory(unsafeSslContext.getSocketFactory());
client.setHostnameVerifier(getUnsafeHostnameVerifier());

client.connect();

注意事项

  • 该方案依赖org.java-websocket:Java-WebSocket库1.3.0及以上版本,低版本不支持setHostnameVerifier方法需先升级依赖
  • 生产环境必须使用受信任的CA证书,严禁禁用SSL校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:39:03