Allow deactivation of SSL X509 Certificates validation
------------------------------------------------------
Key: CXF-2688
URL: https://issues.apache.org/jira/browse/CXF-2688
Project: CXF
Issue Type: New Feature
Components: Transports
Affects Versions: 2.2.6
Reporter: Cyrille Le Clerc
Assignee: Cyrille Le Clerc
CXF client (JAXWS & JAXRS) for HTTPS calls currently only allows to disable
hostname verification ({{<http-conf:tlsClientParameters disableCNCheck="true"
/>}}) but does not allow to disable X509 certificates checking.
Due to this, it can be painful to invoke services with self-signed certificates
on non-production environments (see sample stacktrace below).
Here is a proposal to disable all X509 certificates in CXF (JAXWS & JAXRS)
clients :
* Add boolean attribute {{trustAllCertificates}} to
{{<http-conf:tlsClientParameters ... />}},
* In the {{HTTPConduit}}, if {{trustAllCertificates="true"}}, the
{{HttpsURLConnectionFactory}} will use an 'accept all certificates'
{{javax.net.ssl.X509TrustManager}} and an 'accept all'
{{javax.net.ssl.HostnameVerifier}}.
*Note* : this proposal adds an attribute {{trustAllCertificates}} to the
{{TLSClientParametersType}} complex type and thus *this proposal requires to
publish a new 'backward compatible'
[http://cxf.apache.org/schemas/configuration/security.xsd]*.
Configuration sample enabling 'trustAllCertificates' to invoke an HTTPS service:
{code:xml}
<jaxws:client id="helloWorldServiceClient"
serviceClass="com.example.HelloWorldService"
address="https://example.com/services/helloWorldService">
</jaxws:client>
<http-conf:conduit
name="{http://example.com/}HelloWorldServicePort.http-conduit">
<!-- trust all certificates (self signed certificates, etc) -->
<http-conf:tlsClientParameters trustAllCertificates="true" />
<http-conf:authorization>
<security:UserName>my-user-name</security:UserName>
<security:Password>my-password</security:Password>
</http-conf:authorization>
</http-conf:conduit>
{code}
CXF client exception's stacktrace with a self-signe certificate:
{noformat}
2010/03/01 22:05:23,682 WARN [http-8080-1]
org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for
{http://example.com/}HelloWorldServiceService#{http://example.com/}sayHi has
thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: Could not send Message.
at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
...
at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
at $Proxy69.sayHi(Unknown Source)
...
Caused by: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
...
Caused by: sun.security.validator.ValidatorException: PKIX path building
failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find
valid certification path to requested target
...
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable
to find valid certification path to requested target
...
{noformat}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.