Camel Gurus,
I am running Camel 2.8, and to proxy a https web service I use
the following simple route:
from("servlet:///proxyWebService/api/?matchOnUriPrefix=true")
.process(myProcessor)
.to("https4://realWebService:8443/api/?bridgeEndpoint=true&throwExceptionOnFailure=false");
This worked great in Camel 2.8. In camel 2.10, I am getting a "Certificate
not verified" error. I have not changed anything in my code. I register the
same trust manager as before. I noticed in the camel logs that in 2.10,
instead of using https4, it is using plain https. Also, instead of proxying
a GET, it is changing it to a POST. For instance here is the relevant line
with 2.8:
*[ http-bio-443-exec-16] HttpProducer DEBUG
Executing http GET method:
https4://example.com/foo?bridgeEndpoint=true&throwExceptionOnFailure=true
<http://example.com/foo?bridgeEndpoint=true&throwExceptionOnFailure=true>*
and with 2.10:
*[ http-bio-443-exec-20] HttpProducer DEBUG
Executing http POST method: https://example.com/foo
<https://example.com/foo>*
My client code is the same for both cases. But I notice in 2.10 it is not
using https4 and using https. This seems wrong.
Here are some more logs from the failing 2.10 scenario:
http-bio-443-exec-20] HttpProducer DEBUG
Starting producer: Producer[https4://
example.com/foo?throwExceptionOnFailure=true&bridgeEndpoint=true]
[ http-bio-443-exec-20] ProducerCache DEBUG
Adding to producer cache with key: Endpoint[https4://
example.com/foo?throwExceptionOnFailure=true&bridgeEndpoint=true] fo
r producer: Producer[https4://
example.com/foo?throwExceptionOnFailure=true&bridgeEndpoint=true]
[ http-bio-443-exec-20] DefaultErrorHandler DEBUG
Redelivery enabled: false on error handler:
DefaultErrorHandler[Producer[https4://
example.com/foo?throwExceptionOnFailure
=true&bridgeEndpoint=true]]
[ http-bio-443-exec-20] HttpProducer DEBUG The
uri used by http request is https://example.com/foo
[ http-bio-443-exec-20] HttpProducer DEBUG No
Content-Type provided for URL: https://example.com/foo with exchange:
Exchange[Message: SNIPPED]
[ http-bio-443-exec-20] HttpProducer DEBUG
Executing http POST method: https://example.com/foo
[ http-bio-443-exec-20] ThreadSafeClientConnManager DEBUG Get
connection: {s}->https://example.com, timeout = 0
[ http-bio-443-exec-20] ConnPoolByRoute DEBUG [{s}->
https://example.com] total kept alive: 0, total issued: 0, total allocated:
0 out of 200
[ http-bio-443-exec-20] ConnPoolByRoute DEBUG No
free connections [{s}->https://example.com][null]
[ http-bio-443-exec-20] ConnPoolByRoute DEBUG
Available capacity: 20 out of 20 [{s}->https://example.com][null]
[ http-bio-443-exec-20] ConnPoolByRoute DEBUG
Creating new connection [{s}->https://example.com]
[ http-bio-443-exec-20] efaultClientConnectionOperator DEBUG
Connecting to example.com
[ http-bio-443-exec-20] DefaultClientConnection DEBUG
Connection org.apache.http.impl.conn.DefaultClientConnection@14b66e7 closed
[ http-bio-443-exec-20] DefaultClientConnection DEBUG
Connection org.apache.http.impl.conn.DefaultClientConnection@14b66e7 shut
down
[ http-bio-443-exec-20] ThreadSafeClientConnManager DEBUG
Released connection is not reusable.
[ http-bio-443-exec-20] ConnPoolByRoute DEBUG
Releasing connection [{s}->https://example.com][null]
[ http-bio-443-exec-20] DefaultClientConnection DEBUG
Connection org.apache.http.impl.conn.DefaultClientConnection@14b66e7 closed
[ http-bio-443-exec-20] ConnPoolByRoute DEBUG
Notifying no-one, there are no waiting threads
[ http-bio-443-exec-20] DefaultErrorHandler DEBUG
Failed delivery for (MessageId: ID-apigw-hcmf-ws1-45019-1385508799740-0-3
on ExchangeId: ID-apigw-hcmf-ws1-45019-1385508799740-0-4). On delivery
attempt: 0 caught: javax.net.ssl.SSLException: Certificate not verified.
[ http-bio-443-exec-20] TestExceptionHandler INFO
TestExceptionHandler.process()
[ http-bio-443-exec-20] TestExceptionHandler INFO
Error-Certificate not verified. Certificate not verified.
[ http-bio-443-exec-20] TestExceptionHandler INFO
StackTrace--
javax.net.ssl.SSLException: Certificate not verified.
at com.rsa.sslj.x.aE.b(Unknown Source)
at com.rsa.sslj.x.aE.a(Unknown Source)
at com.rsa.sslj.x.aE.a(Unknown Source)
at com.rsa.sslj.x.aP.c(Unknown Source)
at com.rsa.sslj.x.aP.a(Unknown Source)
at com.rsa.sslj.x.aP.h(Unknown Source)
at com.rsa.sslj.x.cz.startHandshake(Unknown Source)
at
org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:534)
tia,
rouble