mostafammagdy opened a new issue, #1365:
URL: https://github.com/apache/camel-karavan/issues/1365
### Describe the bug
I am using Karavan VS code and I am trying to create a bean called CertCheck
to add my truststore (which is located in another location other than my
karavan project) and set Ssl Context Parameters in the HTTPS component but each
time I try to do jbang run I face the below error :
```
Error pre-parsing resource: file:Reefy.camel.yaml
at
org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.preParseRoute(YamlRoutesBuilderLoader.java:975)
at
org.apache.camel.main.RoutesConfigurer.doConfigureModeline(RoutesConfigurer.java:374)
at
org.apache.camel.main.RoutesConfigurer.configureModeline(RoutesConfigurer.java:300)
at
org.apache.camel.main.BaseMainSupport.modelineRoutes(BaseMainSupport.java:607)
at
org.apache.camel.main.BaseMainSupport.autoconfigure(BaseMainSupport.java:474)
at
org.apache.camel.main.MainSupport.autoconfigure(MainSupport.java:73)
at
org.apache.camel.main.KameletMain.autoconfigure(KameletMain.java:685)
at
org.apache.camel.main.BaseMainSupport.postProcessCamelContext(BaseMainSupport.java:685)
at
org.apache.camel.main.MainSupport.initCamelContext(MainSupport.java:339)
at org.apache.camel.main.KameletMain.doInit(KameletMain.java:355)
at
org.apache.camel.support.service.BaseService.init(BaseService.java:78)
at
org.apache.camel.support.service.BaseService.start(BaseService.java:105)
at
org.apache.camel.dsl.jbang.core.commands.Run.runKameletMain(Run.java:1299)
at org.apache.camel.dsl.jbang.core.commands.Run.run(Run.java:844)
at org.apache.camel.dsl.jbang.core.commands.Run.doCall(Run.java:315)
at
org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:71)
at
org.apache.camel.dsl.jbang.core.commands.CamelCommand.call(CamelCommand.java:37)
at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at
picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
at
picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
at picocli.CommandLine.execute(CommandLine.java:2170)
at
org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:165)
at
org.apache.camel.dsl.jbang.core.commands.CamelJBangMain.run(CamelJBangMain.java:61)
at main.CamelJBang.main(CamelJBang.java:36)
Caused by: java.lang.RuntimeException: Error creating bean: CertCheck of
type: #class:HttpClientConfigurerTrustAllCACerts
at
org.apache.camel.dsl.yaml.deserializers.BeansDeserializer.registerBean(BeansDeserializer.java:118)
at
org.apache.camel.dsl.yaml.deserializers.BeansDeserializer$BeansCustomizer.configure(BeansDeserializer.java:141)
at
org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.preParseNode(YamlRoutesBuilderLoader.java:995)
at
org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.lambda$preParseRoute$6(YamlRoutesBuilderLoader.java:973)
at java.base/java.util.Optional.map(Optional.java:260)
at
org.apache.camel.dsl.yaml.YamlRoutesBuilderLoader.preParseRoute(YamlRoutesBuilderLoader.java:973)
... 27 more
Caused by: java.lang.ClassNotFoundException:
HttpClientConfigurerTrustAllCACerts
Caused by: java.lang.ClassNotFoundException:
HttpClientConfigurerTrustAllCACerts
Caused by: java.lang.ClassNotFoundException:
HttpClientConfigurerTrustAllCACerts
at
org.apache.camel.impl.engine.DefaultClassResolver.resolveMandatoryClass(DefaultClassResolver.java:125)
at
org.apache.camel.support.PropertyBindingSupport.resolveBean(PropertyBindingSupport.java:1566)
assResolver.java:125)
at
org.apache.camel.support.PropertyBindingSupport.resolveBean(PropertyBindingSupporassResolver.java:125)
assResolver.java:125)
assResolver.java:125)
at
org.apache.camel.support.PropertyBindingSupport.resolveBean(PropertyBindingSupport.java:1566)
at
org.apache.camel.model.BeanModelHelper.newInstance(BeanModelHelper.java:132)
at
org.apache.camel.dsl.yaml.deserializers.BeansDeserializer.registerBean(BeansDeserassResolver.java:125)
at
org.apache.camel.support.PropertyBindingSupport.resolveBean(PropertyBindingSupport.java:1566)
at
org.apache.camel.model.BeanModelHelper.newInstance(BeanModelHelper.java:132)
assResolver.java:125)
at
org.apache.camel.support.PropertyBindingSupport.resolveBean(PropertyBindingSupport.java:1566)
assResolver.java:125)
at
org.apache.camel.support.PropertyBindingSupport.resolveBean(PropertyBindingSupporassResolver.java:125)
at
org.apache.camel.support.PropertyBindingSupport.resolveBean(PropertyBindingSupport.java:1566)
at
org.apache.camel.model.BeanModelHelper.newInstance(BeanModelHelper.java:132)
at
org.apache.camel.dsl.yaml.deserializers.BeansDeserializer.registerBean(BeansDeserializer.java:110)
... 32 more
```
here is the bean code :
```
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import org.apache.hc.client5.http.ssl.NoopHostnameVerifier;
import org.apache.hc.client5.http.classic.HttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.camel.component.http.HttpClientConfigurer;
import org.apache.hc.core5.http.config.Registry;
import org.apache.hc.core5.http.config.RegistryBuilder;
import org.apache.hc.client5.http.socket.ConnectionSocketFactory;
import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory;
import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactoryBuilder;
import org.apache.hc.core5.ssl.SSLContextBuilder;
import org.apache.hc.core5.ssl.TrustStrategy;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
// import org.apache.http.impl.conn.BasicHttpClientConnectionManager;
import org.apache.camel.BindToRegistry;
import org.apache.camel.Configuration;
@Configuration
@BindToRegistry("HttpClientConfigurerTrustAllCACerts")
public class HttpClientConfigurerTrustAllCACerts implements
HttpClientConfigurer {
// HttpClientBuilder clientBuilder;
@Override
public void configureHttpClient(HttpClientBuilder clientBuilder) {
// setup a Trust Strategy that allows all certificates.
//
SSLContext sslContext = null;
try {
sslContext = new
SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
public boolean isTrusted(X509Certificate[] arg0,
String arg1) throws CertificateException {
return true;
}
}).build();
} catch (KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// clientBuilder.setSslcontext( sslContext);
// don't check Hostnames, either.
// -- use
SSLConnectionSocketFactory.getDefaultHostnameVerifier(), if you don't want to
weaken
// NoopHostnameVerifier noopHostnameVerifier ;
// HostnameVerifier hostnameVerifier = noopHostnameVerifier ;
// here's the special part:
// -- need to create an SSL Socket Factory, to use our
weakened "trust strategy";
// -- and create a Registry, to register it.
//
SSLConnectionSocketFactory sslSocketFactory = new
SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
Registry<ConnectionSocketFactory> socketFactoryRegistry =
RegistryBuilder.<ConnectionSocketFactory>create()
.register("http",
PlainConnectionSocketFactory.getSocketFactory())
.register("https", sslSocketFactory)
.build();
// now, we create connection-manager using our Registry.
// -- allows multi-threaded use
PoolingHttpClientConnectionManager connectionManager = new
PoolingHttpClientConnectionManager( socketFactoryRegistry);
// final BasicHttpClientConnectionManager connectionManager = new
BasicHttpClientConnectionManager(socketFactoryRegistry);
clientBuilder.setConnectionManager(connectionManager);
}
}
```
Is there any better way to add the truststore to my project?
### Steps to reproduce the behavior
Same as described above
### Variant
Vs Code Extension
### Container Management (if applicable)
None
### Operating System (if applicable)
Windows
### Version
4.6.0
### Relevant log output
_No response_
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]