I have a solution that ignores an unofficial certificate.
public GenerateVcoConnection(URI vcoServer)
throws KeyManagementException, NoSuchAlgorithmException {
session = DefaultVcoSessionFactory.newLdapSession(vcoServer, userId,
password);
ClientHttpRequestFactory requestFactory = requestFactory();
session.getRestTemplate().setRequestFactory(requestFactory);
}
public static ClientHttpRequestFactory requestFactory()
throws KeyManagementException, NoSuchAlgorithmException {
DefaultHttpClient httpClient = new DefaultHttpClient();
// Disable cert verification.
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] xcs, String string)
throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] xcs, String string)
throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
ctx.init(null, new TrustManager[] { tm }, null);
SSLContext.setDefault(ctx);
// Disable hostname verification
X509HostnameVerifier verifier = new X509HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
@Override
public void verify(String arg0, SSLSocket arg1) throws IOException {
}
@Override
public void verify(String arg0, X509Certificate arg1)
throws SSLException {
}
@Override
public void verify(String arg0, String[] arg1, String[] arg2)
throws SSLException {
}
};
SSLSocketFactory ssf = null;
if (VERIFY_HOST_NAME)
ssf = new SSLSocketFactory(ctx);
else
ssf = new SSLSocketFactory(ctx, verifier);
ClientConnectionManager ccm = httpClient.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("https", 443, ssf));
BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials(userId, password));
httpClient.setCredentialsProvider(credentialsProvider);
// HostnameVerifier verifier = new ApprovingHostnameVerifier();
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
httpClient);
return requestFactory;
}