SSL样本上的Citrus-Framework Soap

时间:2016-11-14 20:37:39

标签: citrus-framework

我正在尝试使用Citrus框架来设置回归测试,因为我们将Talend ESB路由升级到最新版本。我们的路线主要是通过SSL保护我们的本地CA并需要证书进行授权。我遵循了sample-soap项目并让它暂时覆盖了证书要求。我失去了试图让它使用证书来客户端调用我们的ESB路由。我在citrusframework.org上找到了sample-https项目,但它似乎是针对Rest服务而制作的,我无法使用我的soap有效载荷。

我的最终目标是调用我们现有的路由,然后调用最新版本的路由,并将返回的XML与某种groovy代码进行比较,以验证它们是否相同。

是否存在Soap over SSL样本,可以帮助我了解我的项目出错了什么?

我尝试将sample-https代码添加到我的soap项目中但没有成功。我得到的错误是ssl-handshake错误,我知道这些错误与证书有关,因为我确定我没有在我的有效负载上附加有效的证书。

1 个答案:

答案 0 :(得分:0)

您的配置必须与https-sample略有不同。您必须在Citrus SOAP Web服务客户端上设置消息发送者:

@Configuration
public class SoapClientSslConfig {

    @Bean
    public HttpClient httpClient() {
        try {
            SSLContext sslcontext = SSLContexts.custom()
                    .loadTrustMaterial(new ClassPathResource("keys/citrus.jks").getFile(), "secret".toCharArray(),
                            new TrustSelfSignedStrategy())
                    .build();

            SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(
                    sslcontext, NoopHostnameVerifier.INSTANCE);

            return HttpClients.custom()
                    .setSSLSocketFactory(sslSocketFactory)
                    .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
                    .addInterceptorFirst(new HttpComponentsMessageSender.RemoveSoapHeadersInterceptor())
                    .build();
        } catch (IOException | CertificateException | NoSuchAlgorithmException | KeyStoreException | KeyManagementException e) {
            throw new BeanCreationException("Failed to create http client for ssl connection", e);
        }
    }

    @Bean
    public HttpComponentsMessageSender sslRequestMessageSender() {
        return new HttpComponentsMessageSender(httpClient());
    }
}

证书在http客户端SSL上下文中配置。

[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
        autocrlf = false
        safecrlf = false
        eol = crlf

示例代码现在也可以在github上找到:https://github.com/christophd/citrus-samples/tree/master/sample-soap-ssl