Hi,

I am using the CXF library (version 3.0.7) to communicate with SSL protected 
web service end points inside my organisation. However when I try and connect 
to them I am getting an error message due to hostname verification. I have 
looked into the code and I have identified the failure is being caused by the 
check on the result of the "countDots" method as follows:
if (strict && countDots(identity) != countDots(domainRoot)) {
    return false;
}

In my case the identify variable follows this pattern:
    hostname.windows_domain.my_company.com
The domainRoot variable follows this pattern:
    .my_company.com
The failure is happening because the former contains 3 dots and the latter 
contains just 2.

Is there any way I can prevent it from performing the strict check, and not 
take this code path?
My stack trace is as follows:
    DefaultHostnameVerifier.matchIdentity(String, String, PublicSuffixMatcher, 
Boolean) line:182
    DefaultHostnameVerifier.matchIdentityStrict(String, String, 
PublicSuffixMatcher) line: 241
    DefaultHostnameVerifier.matchDNSName(String, List<String>, 
PublicSuffixMatcher) line: 148
    DefaultHostnameVerifier.verify(String, X509Certificate) line: 103
    DefaultHostnameVerifier.verify(String, SSLSession) line: 81
    AsyncHTTPConduit$AsyncWrappedOutputStream$5.verifySession(HttpHost, 
IOSession, SSLSession) line: 536
    SSLIOSessionStrategy$1.verify(IOSession, SSLSession) line: 140
As you can see the Boolean for the strict checked is not something I seem to 
have any control over as the "matchIdentityStrict" method is called by 
"matchDNSName" directly.

Regards,
Tom

Reply via email to