gpt4 book ai didi

java - 有没有办法在柑橘框架中关闭 ssl 验证?

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:50 25 4
gpt4 key购买 nike

我想测试一个 https (api) 客户端。

但我想关闭 citrus 中的 ssl 验证。你能告诉我如何关闭 ssl 验证吗?

(httpActionBuilder -> httpActionBuilder 
.client("https://localhost") .send() .get() .header(....)

这是自动检查 ssl 证书。

我收到以下异常:

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException.

有什么方法可以关闭 ssl 验证(就像我们在 postman 或任何其他框架中禁用 ssl 验证一样)。

我如何将上下文添加到柑橘测试的 ssl 上下文

http(httpActionBuilder -> httpActionBuilder.client("https://....com ") .send() .get() .header(....)

最佳答案

添加以下类

class NonValidatingTrustManager implements X509TrustManager {

@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}

@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}

@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}

然后在 Spring 中 @Configuration 通过声明新 bean 覆盖默认的 SSLContext

@Bean
public SSLContext sslContext() throws KeyManagementException, NoSuchAlgorithmException {
SSLContext ctx = SSLContext.getInstance("TLS"); // or try "SSL"
ctx.init(null, new TrustManager[] { new NonValidatingTrustManager() }, null);
return ctx;
}

更新

对于测试,您创建单独的配置类并将覆盖的 SSLContext 也放在那里:

@TestConfiguration
class TestConfig {

@Bean
public SSLContext sslContext() throws Exception {
SSLContext ctx = SSLContext.getInstance("TLS"); // or try "SSL"
ctx.init(null, new TrustManager[] { new NonValidatingTrustManager() }, null);
return ctx;
}
}

并在单元测试中使用它,例如:

@SpringBootTest(classes = { TestConfig.class })
class MyTest {
...
}

关于java - 有没有办法在柑橘框架中关闭 ssl 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57301733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com