[ 
https://issues.apache.org/jira/browse/CAMEL-25964?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-25964.
---------------------------------
    Resolution: Fixed

> camel-vertx - VertxHelper does not apply standalone TrustManager from 
> SSLContextParameters
> ------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-25964
>                 URL: https://issues.apache.org/jira/browse/CAMEL-25964
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-vertx
>            Reporter: Andrea Cosentino
>            Assignee: Andrea Cosentino
>            Priority: Major
>             Fix For: 4.18.6, 4.22.3, 4.24.0
>
>
> h3. Current behaviour
> In 
> {{org.apache.camel.component.vertx.common.VertxHelper.setupSSLOptions(...)}} 
> (camel-vertx-common), Vert.x {{TCPSSLOptions}} are configured from 
> {{SSLContextParameters}}.
> When {{TrustManagersParameters}} is configured with a standalone 
> {{TrustManager}} via {{setTrustManager(...)}} without a {{KeyStore}}, 
> {{createTrustManagerFactory(...)}} returns {{null}} because no keystore is 
> present.
> {{VertxHelper}} then checks only whether:
> {code:java}
> if (sslContextParameters.getTrustManagers() != null &&
>         sslContextParameters.getTrustManagers().getTrustManager() == 
> TrustAllTrustManager.INSTANCE) {
>     
> tcpsslOptions.setTrustOptions(TrustOptions.wrap(TrustAllTrustManager.INSTANCE));
> }
> {code}
> Any other standalone {{TrustManager}} instance (such as a custom or pinned 
> trust manager) is not passed to {{tcpsslOptions.setTrustOptions(...)}}. As a 
> result, {{tcpsslOptions.getTrustOptions()}} remains {{null}}, and Vert.x 
> falls back to its default trust configuration.
> h3. Expected behaviour
> When {{TrustManagersParameters.getTrustManager()}} is configured with any 
> {{TrustManager}}, {{VertxHelper}} should wrap and apply it using 
> {{TrustOptions.wrap(trustManager)}}.
> When no standalone {{TrustManager}} is supplied, 
> {{createTrustManagerFactory(...)}} should continue to be used to configure 
> {{TrustManagerFactoryOptions}} from the configured keystore.
> h3. Change
> * {{org.apache.camel.component.vertx.common.VertxHelper}}: Check whether 
> {{sslContextParameters.getTrustManagers() != null && 
> sslContextParameters.getTrustManagers().getTrustManager() != null}}. If 
> present, call 
> {{tcpsslOptions.setTrustOptions(TrustOptions.wrap(trustManager))}}. 
> Otherwise, call {{createTrustManagerFactory(camelContext, 
> sslContextParameters)}} as before.
> * Add unit tests in camel-vertx-common to verify standalone {{TrustManager}} 
> instances are applied to {{TCPSSLOptions}}.
> h3. Tests
> * Add {{VertxHelperTest}} in {{camel-vertx-common}} to test:
>   - Standalone custom {{TrustManager}} is wrapped and applied.
>   - {{TrustAllTrustManager.INSTANCE}} is wrapped and applied.
>   - KeyStore-based {{TrustManagerFactory}} is applied when no standalone 
> manager is set.
> * Verify existing Vert.x component tests remain green.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to