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

Karate 1.1.0配置代理后请求API报unrecognized_name SSL错误如何解决

解决方案

SSLHandshakeException: Received fatal alert: unrecognized_name错误是HTTPS请求经过代理时,SNI(服务器名称指示)扩展和代理端配置不匹配导致的,你可以按照以下步骤依次排查解决:

方案1:调整Karate代理配置(优先尝试)

原来的字符串形式代理配置参数不全,替换为全量对象格式配置,关闭SNI扩展:
在karate-config.js中修改代理配置为:

karate.configure('proxy', {
  uri: 'http://<你的代理地址及端口>',
  nonProxyHosts: ['localhost', '127.0.0.1'], // 不需要走代理的内网地址可添加到此处
  enable: true,
  ssl: {
    disableSni: true
  }
});

方案2:添加JVM启动参数关闭SNI

如果方案1无效,在Jenkins执行测试的启动命令中添加JVM参数,全局禁用SNI扩展:

  • 如果是Maven项目,执行命令修改为:
    mvn test -Djsse.enableSNIExtension=false
  • 如果是Gradle项目,在test任务中添加jvmArgs配置:
test {
    jvmArgs '-Djsse.enableSNIExtension=false'
}

方案3:导入代理服务器证书到JDK信任库

如果你的代理服务器使用自签名证书,需要将代理的根证书导入到Jenkins节点运行测试所用JDK的信任库,执行命令如下:
keytool -import -alias proxy-ca -file /path/to/proxy_ca.crt -keystore $JAVA_HOME/jre/lib/security/cacerts
信任库默认密码为changeit。

验证

配置完成后先在Jenkins节点本地手动执行测试,确认接口可以正常请求后再接入流水线。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:51:03