我有以下示例空手道脚本
* url 'https://abcd-xxxx.xx.xxx.xxx.xxx/apipath'
* header Content-Type = 'application/json'
* header Accept = 'application/json'
* configure ssl = false
场景:
黄瓜测试步骤
使用上面的测试脚本,我遇到以下错误。
javax.net.ssl.SSLPeerUnverifiedException:org.apache.http.conn.ssl.DefaultHostnameVerifier - 的证书与任何主题备用名称不匹配:[备用名称列表]
在 org.apache.http.conn.ssl.DefaultHostnameVerifier.matchDNSName(DefaultHostnameVerifier.java:177)
在 org.apache.http.conn.ssl.DefaultHostnameVerifier.verify(DefaultHostnameVerifier.java:122)
在 org.apache.http.conn.ssl.DefaultHostnameVerifier.verify(DefaultHostnameVerifier.java:99)
在 org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:503)
在 org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:437)
在 org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384)
在org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
在org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
在 org.apache.http.impl.execchain.MainClientExec.builtRoute(MainClientExec.java:393)
在 org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
在 org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
在 org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
在 org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
在 org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
在 org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
在 com.intuit.karate.http.apache.ApacheHttpClient.makeHttpRequest(ApacheHttpClient.java:313)
在 com.intuit.karate.http.apache.ApacheHttpClient.makeHttpRequest(ApacheHttpClient.java:89)
在 com.intuit.karate.http.HttpClient.invoke(HttpClient.java:237)
在 com.intuit.karate.core.ScenarioContext.clientInvoke(ScenarioContext.java:758)
在 com.intuit.karate.core.ScenarioContext.method(ScenarioContext.java:811)
在 com.intuit.karate.StepActions.method(StepActions.java:251)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:498)
在 com.intuit.karate.core.Engine.executeStep(Engine.java:150)
我已将 https://abcd-xxxx.xx.xxx.xxx.xxx 证书添加到 java 密钥库中。但我面临上述问题。众所周知,主机名不存在于我在上述主机 URL 的信任存储中添加的证书主题备用名称部分中。截至目前,我认为我无法在现有证书中添加预期的替代方案。因此,只需检查是否有任何方法可以跳过空手道中的 DefaultHostname 验证,我就可以运行测试。
我也尝试过同样的失眠,效果很好。当 SSL = true 时,出现 503 服务不可用错误,但是该服务正在运行,因为我仍然可以通过 insomnia 工具进行测试。