[
https://issues.apache.org/jira/browse/CAMEL-15075?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17112336#comment-17112336
]
Peter Kullmann commented on CAMEL-15075:
----------------------------------------
I think it's easy to reproduce: Just take the example in the docs:
{code:java}
// Configure the SSLContextParameters object
KeyStoreParameters ksp = new KeyStoreParameters();
ksp.setResource("/path/to/keystore.jks");
ksp.setPassword("changeit");
KeyManagersParameters kmp = new KeyManagersParameters();
kmp.setKeyStore(ksp);
kmp.setKeyPassword("changeit");
SSLContextParameters scp = new SSLContextParameters();
scp.setKeyManagers(kmp);
// Bind this SSLContextParameters into the Camel registry
Registry registry = createCamelRegistry();
registry.bind("ssl", scp);
// Configure the camel context
DefaultCamelContext camelContext = new DefaultCamelContext(registry);
camelContext.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("kafka:" + TOPIC + "?brokers=localhost:{{kafkaPort}}" +
// Setup the topic and broker address
"&groupId=A" +
// The consumer processor group ID
"&sslContextParameters=#ssl" +
// The security protocol
"&securityProtocol=SSL)
// Reference the SSL configuration
.to("mock:result");
}
});
{code}
The /path/to/keystore.jks should point to a classpath resource. Then kafka will
complain:
{code:java}
[main] ERROR org.apache.kafka.common.security.ssl.SslEngineBuilder -
Modification time of key store could not be obtained: blabla
java.nio.file.NoSuchFileException: blabla
at
sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:79)
at
sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
{code}
I tried to produce a small running example but the archetype produces non
compilable code and gave up:
{code:java}
Main main = new Main();
main.addRouteBuilder(new MyRouteBuilder());
main.run(args);
{code}
I think, it would be enough to mention this in the docs.
> camel-kafka - Configuration via SSLContextParameters does not work as expected
> ------------------------------------------------------------------------------
>
> Key: CAMEL-15075
> URL: https://issues.apache.org/jira/browse/CAMEL-15075
> Project: Camel
> Issue Type: Bug
> Components: camel-kafka
> Affects Versions: 3.2.0
> Reporter: Peter Kullmann
> Priority: Major
> Fix For: 3.4.0
>
>
> The ssl parameters in kafka can be set using a camel SSLContextParameter
> object (see CAMEL-10705). But it doesn't work as expected.
> Camel allows many ways to specify a keystore location, ie a file path, a
> class path or an URL of the resource. Camel tries all possible ways to read
> the keystore. (Eg
> SSLContextParameters.getTrustManagers().getKeyStore().getResource()).
> For kafka this resolution doesn't take place. Kafka receives just the raw
> resource string (org.apache.camel.component.kafka.KafkaConfiguration:511):
>
> {code:java}
> addPropertyIfNotNull(props, SslConfigs.SSL_TRUSTSTORE_LOCATION_CONFIG,
> keyStore.getResource());
> {code}
> Kafka has a different expectation on this location from camel. In particular
> setting the camel keystore resource to a classpath location doesn't work for
> kafka (see also KAFKA-7685 for an attempt to support classpath resources).
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)