Согласно этой записи часто задаваемых вопросов , похоже, что HttpUnit использует реализацию SSL, предоставленную стандартной библиотекой Java.Написание и установка «принять все» TrustManager
проста:
private static class AnyTrustManager implements X509TrustManager
{
public void checkClientTrusted(X509Certificate[] chain, String authType)
{
}
public void checkServerTrusted(X509Certificate[] chain, String authType)
{
}
public X509Certificate[] getAcceptedIssuers()
{
return new X509Certificate[0];
}
}
static {
try {
SSLContext ssl = SSLContext.getInstance("SSL");
ssl.init(null, new X509TrustManager[] {new AnyTrustManager()}, null);
HttpsURLConnection.setDefaultSSLSocketFactory(ssl.getSocketFactory());
} catch (NoSuchAlgorithmException ex) {
throw new Error(ex);
} catch (KeyManagementException ex) {
throw new Error(ex);
}
}
Однако следует помнить, что для этого примера кода могут потребоваться некоторые модификации для работы с HttpUnit (например, если библиотека устанавливает соединенияиспользование пользовательского SocketFactory)
Поскольку кажется, что HttpUnit не предоставляет никакого API для установки пользовательского SSLSocketFactry, здесь есть альтернативное решение, устанавливающее контекст SSL по умолчанию (только Java 6)
static {
try {
SSLContext ssl = SSLContext.getDefault();
ssl.init(null, new X509TrustManager[] {new AnyTrustManager()}, null);
} catch (NoSuchAlgorithmException ex) {
throw new Error(ex);
} catch (KeyManagementException ex) {
throw new Error(ex);
}
}