Доверяйте самоподписанному сертификату в компоненте Apache CXF Camel - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть приложение Apache Camel, которое построено поверх Spring Boot с использованием библиотеки camel-spring-boot-starter. Я пытаюсь отправить сообщения SOAP с помощью компонента CXF во внешнюю систему, которая предоставляет конечную точку HTTPS, защищенную самозаверяющим сертификатом. У меня нет доступа к сертификату, чтобы импортировать его в хранилище ключей, которое, как я знаю, является самым простым вариантом.

Мой верблюжий маршрут внутри моего RouteBuilder экземпляра выглядит так:

 @Override
    public void configure() throws Exception
    {
        from(STATUS_REQUEST_TRIGGER)
        .to("cxf:" + statusEndpoint + "?serviceClass=" + ExternalSoapService.class.getName()
                + "&loggingFeatureEnabled=true"
                + "&properties.schema-validation-enabled=true");
    }

Локально все работает, но когда я указываю statusEndpoint на внешнюю систему, которая использует самоподписанный сертификат, возникает исключение:

org.apache.cxf.interceptor.Fault: Could not send Message.
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)

...

Caused by: javax.net.ssl.SSLHandshakeException: SSLHandshakeException invoking https://externalsystem.co.uk/interface: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Можно ли как-то настроить компонент верблюда, чтобы пропустить проверку сертификата? Этот компонент будет использоваться только в тестовых сценариях и не будет работать в рабочей среде, поэтому я согласен с рисками, связанными с пропуском проверки сертификата.

...