Well, my attempt to make it ignore all SSL errors only servered to have it reliably fail on my development machine too now.
class NaiveTrustManager extends X509TrustManager {
println("trust manager created")
override def checkClientTrusted(arg0: Array[X509Certificate], arg1: String) {
println("Checking if the client is trusted")
}
override def checkServerTrusted(arg0: Array[X509Certificate], arg1: String) {
println("Checking if the server is trusted")
}
override def getAcceptedIssuers(): Array[X509Certificate] = {
println("Checking for issuers.")
return null;
}
}
lazy val http = new Http {
def insecureClient() = {
println("making insecure client")
val sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, Array(new TrustManager {
new NaiveTrustManager()
}), new SecureRandom());
val sf = new SSLSocketFactory(sslContext, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
val httpsScheme = new Scheme("https", sf, 443);
val schemeRegistry = new SchemeRegistry();
schemeRegistry.register(httpsScheme);
val dispatch_client = new ConfiguredHttpClient(credentials)
val params = dispatch_client.createHttpParams
val cm = new SingleClientConnManager(params, schemeRegistry);
val client = new DefaultHttpClient(cm, params)
println(client)
client
}
override def make_client = insecureClient()
}
making insecure client
trust manager created
org.apache.http.impl.client.DefaultHttpClient@36184f8
INF: [console logger] dispatch: www.westernunion.co.uk GET /WUCOMWEB/staticMid.do?method=load&countryCode=GB&languageCode=en&pagename=HomePage HTTP/1.1 javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
Basically, it looks like I'm successfully creating a new client with my trust manager but its override methods to ignore SSL errors never get called.
Any ideas?
Thanks,
Peter