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]

Reply via email to