この FAQ エントリによると、HttpUnit は Java 標準ライブラリが提供する SSL 実装を使用しているようです。「accept all」の作成とインストール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 はカスタム SSLSocketFactry を設定するための API を提供していないように見えるため、ここではデフォルトの 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);
}
}