Thanks. Figured it out today. Turned out to be "self inflicted". It looks like at some point our deployment package for our application had the following java option set "
*-Djsse.enableSNIExtension=false".*Effectively, this option was turning off the ability to look at alternate names. Now I have to do the research on why we had it set like that. Thanks for the assistance. Cole On Wed, Nov 5, 2014 at 3:50 AM, Colm O hEigeartaigh <cohei...@apache.org> wrote: > The CertificateHostnameVerifier does support subject alternative names. I'd > recommend setting a breakpoint in the "check" methods here + see what is > going on: > > > https://git-wip-us.apache.org/repos/asf?p=cxf.git;a=blob_plain;f=rt/transports/http/src/main/java/org/apache/cxf/transport/https/CertificateHostnameVerifier.java;hb=HEAD > > Colm. > > On Tue, Nov 4, 2014 at 3:56 PM, Cole Ferrier <c...@coleferrier.com> wrote: > > > Having a little bit of trouble with a a client web service due to a > server > > now having a certificate where its name is only in Subject Alternate > Names. > > > > At first we where getting an error that was out of CXF and it said to > set " > > disableCNCheck" to true, however we don't want to disable alternate > names. > > > > Then I tried a simple test: > > > > url = new URL(https_url); > > HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); > > > > and java 7 was able to connect to the url and download content from it. > (it > > didn't through off any errors). > > > > So then we set useHttpsURLConnectionDefaultSslSocketFactory and > > useHttpsURLConnectionDefaultHostnameVerifier to true to try to use the > Java > > versions. > > > > javax.xml.ws.WebServiceException: Could not send Message. > > at > > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145) > > at com.sun.proxy.$Proxy50.callback(Unknown Source) > > ..... (Code that called started the web service call) > > Caused by: javax.net.ssl.SSLHandshakeException: SSLHandshakeException > > invoking https://xxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxxxxx: > > java.security.cert.CertificateException: No subject alternative DNS name > > matching xxxxxxxxxxxxxxxxxxxxxxx found. > > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > > Method) > > at > > > > > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) > > at > > > > > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > > at java.lang.reflect.Constructor.newInstance(Constructor.java:526) > > at > > > > > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1334) > > at > > > > > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1318) > > at > > org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) > > at > > org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:623) > > at > > > > > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) > > at > > > > > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) > > at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:541) > > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:474) > > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:377) > > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:330) > > at > org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) > > at > > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134) > > ... 5 more > > Caused by: javax.net.ssl.SSLHandshakeException: > > java.security.cert.CertificateException: No subject alternative DNS name > > matching xxxxxxxxxxxxxxxx found. > > at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) > > at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886) > > at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) > > at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) > > at > > > > > sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341) > > at > > > sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153) > > at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) > > at sun.security.ssl.Handshaker.process_record(Handshaker.java:804) > > at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016) > > at > > > > > sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) > > at > > sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) > > at > > sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) > > at > > sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:515) > > at > > > > > sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) > > at > > > > > sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1090) > > at > > > > > sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) > > at > > > > > org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream.setupWrappedStream(URLConnectionHTTPConduit.java:168) > > at > > > > > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1278) > > at > > > > > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1234) > > at > > > > > org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream.onFirstWrite(URLConnectionHTTPConduit.java:195) > > at > > > > > org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:47) > > at > > > > > org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69) > > at > > > > > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1291) > > ... 15 more > > Caused by: java.security.cert.CertificateException: No subject > alternative > > DNS name matching xxxxxxxxxxxxxxxxx found. > > at > sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:191) > > at sun.security.util.HostnameChecker.match(HostnameChecker.java:93) > > at > > > > > sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:347) > > at > > > > > sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:203) > > at > > > > > sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126) > > at > > > > > sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323) > > ... 33 more > > > > > > Any Ideas why a basic URL connection works, but CXF while set to use the > > Java defaults doesn't? > > > > > > Thanks. > > > > Cole > > > > > > -- > Colm O hEigeartaigh > > Talend Community Coder > http://coders.talend.com >