You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@camel.apache.org by "Gary Tully (JIRA)" <ji...@apache.org> on 2008/04/02 14:13:32 UTC
[jira] Commented: (CAMEL-407) Password error for jetty:https
endpoint
[ https://issues.apache.org/activemq/browse/CAMEL-407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=41965#action_41965 ]
Gary Tully commented on CAMEL-407:
----------------------------------
for: Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
see a good explination @ http://blogs.sun.com/andreas/entry/no_more_unable_to_find
Essentially the problem is that the cert is self signed or does not use a hostname as the CN component. The blog post and referenced code should help.
For my test I used a a jetty client (which uses apache commons httpclient) and added a protocol handler that will not validate the servers cert. Configuring the default jdk httpClient is probably a little different.
return new RouteBuilder() {
public void configure() {
Protocol easyhttps = new Protocol("https", new EasySSLProtocolSocketFactory(), 8080);
Protocol.registerProtocol("https", easyhttps);
from("jetty:https://localhost:8080/test").to("mock:a");
Processor proc = new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.getOut(true).setBody("<b>Hello World</b>");
}
};
from("jetty:https://localhost:8080/hello").process(proc);
}
};
where EasySSLProtocolSocketFactory is @ http://svn.apache.org/viewvc/httpcomponents/oac.hc3x/trunk/src/contrib/org/apache/commons/httpclient/contrib/ssl/EasySSLProtocolSocketFactory.java?view=markup
more doco for httpClient @ http://hc.apache.org/httpclient-3.x/sslguide.html
This is all to work around the use of a self-signed cert which is a little bogus.
The alternative is to use a real valid signed cert from one of the approved authorities and add it to the keystore.
> Password error for jetty:https endpoint
> ---------------------------------------
>
> Key: CAMEL-407
> URL: https://issues.apache.org/activemq/browse/CAMEL-407
> Project: Apache Camel
> Issue Type: Bug
> Components: camel-jetty
> Affects Versions: 1.3.0
> Reporter: Micky Santomax
> Priority: Critical
> Fix For: 1.3.0
>
> Attachments: TestHttpsRoute.java
>
>
> I've defined an http endpoint by this code :
> this.from("jetty:https://localhost:8193/SSLTest/")
> .process(new Processor());
> When I install my application in Tomcat 6.0.13 it throws this exception :
> 2008-03-18 20:05:42.998::WARN: EXCEPTION
> java.security.UnrecoverableKeyException: Password must not be null
> at sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:107)
> at sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:38)
> at java.security.KeyStore.getKey(KeyStore.java:763)
> at com.sun.net.ssl.internal.ssl.SunX509KeyManagerImpl.<init>(SunX509KeyManagerImpl.java:113)
> at com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:48)
> at javax.net.ssl.KeyManagerFactory.init(KeyManagerFactory.java:239)
> at org.mortbay.jetty.security.SslSocketConnector.createFactory(SslSocketConnector.java:202)
> at org.mortbay.jetty.security.SslSocketConnector.newServerSocket(SslSocketConnector.java:407)
> at org.mortbay.jetty.bio.SocketConnector.open(SocketConnector.java:73)
> at org.mortbay.jetty.AbstractConnector.doStart(AbstractConnector.java:272)
> at org.mortbay.jetty.bio.SocketConnector.doStart(SocketConnector.java:147)
> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
> at org.apache.camel.component.jetty.JettyHttpComponent.connect(JettyHttpComponent.java:98)
> at org.apache.camel.component.http.HttpEndpoint.connect(HttpEndpoint.java:80)
> at org.apache.camel.component.http.HttpConsumer.doStart(HttpConsumer.java:50)
> at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:51)
> at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:64)
> at org.apache.camel.impl.DefaultCamelContext.startRoutes(DefaultCamelContext.java:461)
> at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:435)
> at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:140)
> at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:51)
> at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:96)
> at org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:77)
> at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
> at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:75)
> at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:246)
> at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:355)
> at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91)
> at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75)
> at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
> at it.unibas.springfreesbee.ContextStartup.contextInitialized(ContextStartup.java:43)
> at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
> at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
> at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
> at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
> at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
> at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
> at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:511)
> at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1220)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
> at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
> at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
> at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1458)
> at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:820)
> at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:354)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:619)
> 2008-03-18 20:05:42.012::WARN: failed SslSocketConnector@0.0.0.0:8193
> java.io.IOException: Could not create JsseListener: java.security.UnrecoverableKeyException: Password must not be null
> at org.mortbay.jetty.security.SslSocketConnector.newServerSocket(SslSocketConnector.java:446)
> at org.mortbay.jetty.bio.SocketConnector.open(SocketConnector.java:73)
> at org.mortbay.jetty.AbstractConnector.doStart(AbstractConnector.java:272)
> at org.mortbay.jetty.bio.SocketConnector.doStart(SocketConnector.java:147)
> at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39)
> at org.apache.camel.component.jetty.JettyHttpComponent.connect(JettyHttpComponent.java:98)
> at org.apache.camel.component.http.HttpEndpoint.connect(HttpEndpoint.java:80)
> at org.apache.camel.component.http.HttpConsumer.doStart(HttpConsumer.java:50)
> at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:51)
> at org.apache.camel.util.ServiceHelper.startServices(ServiceHelper.java:64)
> at org.apache.camel.impl.DefaultCamelContext.startRoutes(DefaultCamelContext.java:461)
> at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:435)
> at org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:140)
> at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:51)
> at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:96)
> at org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:77)
> at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
> at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:75)
> at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:246)
> at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:355)
> at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91)
> at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75)
> at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
> at it.unibas.springfreesbee.ContextStartup.contextInitialized(ContextStartup.java:43)
> at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)
> at org.apache.catalina.core.StandardContext.start(StandardContext.java:4334)
> at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
> at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
> at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
> at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
> at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:511)
> at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1220)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
> at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)
> at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
> at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1458)
> at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:820)
> at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:354)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:619)
> ERROR [it.unibas.springfreesbee.ContextStartup - contextInitialized] - org.apache.camel.RuntimeCamelException: java.io.IOException: Could not create JsseListener: java.security.UnrecoverableKeyException: Password must not be null
> I have follow all steps of jetty ssl configuration, but the error is the same with both keytool and openssl applications.
> I think that problems are in routing because if I set only
> this.from("jetty:https://localhost:8193/SSLTest/");
> There aren't installation problems in Tomcat, when I access to the endpoint by browser it ask the acceptance of certificate. In this case there is another exception at runtime :
> 2008-03-26 18:56:14.933::WARN: handle failed
> java.lang.NullPointerException
> at org.mortbay.thread.BoundedThreadPool.isLowOnThreads(BoundedThreadPool.java:216)
> at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:218)
> at org.mortbay.jetty.security.SslSocketConnector$SslConnection.run(SslSocketConnector.java:620)
> at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.