this FAQ entryによると、HttpUnitはJava標準ライブラリで提供されているSSL実装を使用しているようです。ライティングと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 )
ここでカスタムSSLSocketFactryを設定するための任意のAPIを提供していませんHttpUnitとすると、デフォルトの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);
}
}
出典
2011-02-01 22:54:24
Jcs
おかげで、その標準WebConversation.getResponse()を呼び出すには、このTrustManagerのを実装するのだろうか? – TheWolf
私はテストが必要と思う。上記のように、デフォルトのSSLFactoryを設定する必要があるかもしれません。私は私の応答を編集して、別の解決策/回避策を提供します。 – Jcs
java.security.KeyManagementException:デフォルトのSSLContextが自動的に初期化される –