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

Selenium自动化测试ProxyToServerConnection异常排查求助

解决ProxyToServerConnection SSLHandshakeException(Tag mismatch!)的方案

针对卡巴斯基证书替换导致的日志刷屏问题,以下是几个实用的解决思路:

1. 屏蔽目标日志输出(最快见效)

既然测试功能不受影响,直接调整日志级别屏蔽该错误即可。根据你使用的日志框架修改配置:

  • Log4j:在log4j.properties中添加
    log4j.logger.org.apache.http.conn.ssl.ProxyToServerConnection=ERROR
    
    也可直接设为OFF彻底关闭该类日志。
  • Logback:在logback.xml中添加
    <logger name="org.apache.http.conn.ssl.ProxyToServerConnection" level="ERROR" />
    

2. 导入卡巴斯基根证书到JVM信任库

卡巴斯基的中间人证书未被JVM默认信任,是触发握手错误的根源。将其导入JVM系统信任库即可解决:

  1. 导出卡巴斯基根证书:打开浏览器访问任意HTTPS站点,查看证书详情,导出为.crt格式(建议选DER编码)。
  2. 执行keytool命令导入(替换路径和证书名):
    keytool -import -alias kaspersky-root -file /path/to/kaspersky.crt -keystore $JAVA_HOME/jre/lib/security/cacerts
    
    默认密钥库密码为changeit,按提示确认导入即可。

3. 自定义Selenium HttpClient忽略SSL验证(测试环境专用)

如果无法修改JVM信任库,可以通过自定义Selenium底层的HttpClient来跳过SSL证书验证:

import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.openqa.selenium.remote.HttpCommandExecutor;
import org.openqa.selenium.remote.RemoteWebDriver;

// 在WebDriver初始化完成后执行以下代码
SSLContext sslContext = new SSLContextBuilder()
        .loadTrustMaterial(null, (chain, authType) -> true) // 信任所有证书
        .build();

CloseableHttpClient httpClient = HttpClients.custom()
        .setSSLContext(sslContext)
        .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE) // 忽略主机名验证
        .build();

// 替换RemoteWebDriver的HttpClient
HttpCommandExecutor executor = (HttpCommandExecutor) ((RemoteWebDriver) yourDriverInstance).getCommandExecutor();
executor.setHttpClient(httpClient);
((RemoteWebDriver) yourDriverInstance).setCommandExecutor(executor);

注意:此方法仅适用于测试环境,生产环境禁用。

4. 配置浏览器参数忽略证书错误

针对Chrome/Firefox等浏览器,直接通过Options设置忽略证书错误:

  • ChromeDriver:
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--ignore-certificate-errors");
    options.addArguments("--ignore-ssl-errors");
    WebDriver driver = new ChromeDriver(options);
    
  • FirefoxDriver:
    FirefoxOptions options = new FirefoxOptions();
    options.setAcceptInsecureCerts(true);
    WebDriver driver = new FirefoxDriver(options);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:30:55