首页 > 解决方案 > 有没有办法在 citrus 框架中关闭 ssl 验证?

问题描述

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

但我想关闭ssl validation柑橘。你能告诉我如何关闭ssl验证吗?

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

这是自动检查ssl证书。

我收到以下异常:

PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径;嵌套异常是 javax.net.ssl.SSLHandshakeException。

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

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

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

标签: javasslcitrus-framework

解决方案


你可以试试下面的代码。我正在尝试允许所有受信任的证书,以便您可以进行 https 调用。

try {
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
            public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; }
            public void checkClientTrusted(X509Certificate[] certs, String authType) { }
            public void checkServerTrusted(X509Certificate[] certs, String authType) { }

        } };

SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(
                sslcontext, NoopHostnameVerifier.INSTANCE);     
HttpClients.custom()
                .setSSLSocketFactory(sslSocketFactory)
                .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
                .build();               
}
catch (IOException | CertificateException | NoSuchAlgorithmException | KeyStoreException | KeyManagementException e) {
        throw new BeanCreationException("Failed to create http client for ssl connection", e);
}

推荐阅读