2007年9月21日金曜日

sun security provider on IBM JDK


import com.sun.net.ssl.SSLContext;
import com.sun.net.ssl.TrustManager;
import com.sun.net.ssl.X509TrustManager;

X509TrustManager mgr = new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}

public boolean isClientTrusted(X509Certificate[] arg0) {
return true;
}

public boolean isServerTrusted(X509Certificate[] arg0) {
return true;
}
};

TrustManager tm[] = { (TrustManager) mgr };

SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, tm, new SecureRandom());
SSLSocketFactory sf = sslContext.getSocketFactory();


こんなソースをIBM JDKで稼動させる場合に
$JAVA_HOME/jre/lib/security/java.security
を編集することで対応できるが、

編集がいろいろな事情で不可能な場合、
Security.insertProviderAt(new com.sun.net.ssl.internal.ssl.Provider(), 1);
で動的にProviderを追加してあげるとOK.

念のため該当処理が終わったら念のため
Security.removeProvider("SunJSSE");
でお掃除もすれば、他に影響与えずにいけるでしょう。