アプリケーションを起動しようとしたときにこのエラーを受け取りました:
Sun.security.validator.ValidatorException: PKIX path validation failed:
Java.security.cert.CertPathValidatorException: Java.net.UnknownHostException:oscp.thawte.com
アプリケーションは閉じたネットワークの背後にあり、oscp.thawte.comにアクセスすることはできません。これを無効にできるJava設定はありますか?
-Dcom.Sun.net.ssl.checkRevocation=false
設定ではありませんが、デフォルトのTrustManagerとHostnameVerifierをオーバーライドして、何でも受け入れることができます。安全なアプローチではありませんが、あなたの状況では、それは受け入れられるかもしれません。
完全な例: HTTPSの証明書の問題を修正
Cliユーティリティkeytoolfrom Javaインポート用ソフトウェア配布(およびtrust! )必要な証明書
サンプル:
Cliからdirをjre\binに変更します
キーストア(jre\binディレクトリにあるファイル)を確認します
keytool -list -keystore ..\lib\security\cacerts
キーストアのパスワードを入力:changeit
必要なサーバーからすべての証明書チェーンをダウンロードして保存します。
証明書を追加します(ファイル「..\lib\security\cacerts」の「読み取り専用」属性を削除する前に)keytool -alias REPLACE_TO_ANY_UNIQ_NAME -import -keystore ..\lib\security\cacerts -file "r:\ root。 crt」
偶然、このような簡単なヒントを見つけました。他のソリューションでは、InstallCert.JavaおよびJDKの使用が必要です
ソース: http://www.Java-samples.com/showtutorial.php?tutorialid=21
上記の答えに加えて。 TrustManagerを実装することにより、プログラムで実行できます。
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public Java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {}
}
};
SSLContext sc=null;
try {
sc = SSLContext.getInstance("SSL");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
try {
sc.init(null, trustAllCerts, new Java.security.SecureRandom());
} catch (KeyManagementException e) {
e.printStackTrace();
}
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// Create all-trusting Host name verifier
HostnameVerifier validHosts = new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
};
// All hosts will be valid
HttpsURLConnection.setDefaultHostnameVerifier(validHosts);
ただし、これは実稼働環境では推奨されません。
JavaでSSL証明書の検証を無効にする方法 のこの例には、プロジェクトでコピーできるユーティリティクラスが含まれています。
MKからの回答は問題なく動作します:)
Axis webserviceで、証明書チェックを無効にする必要がある場合は、以下のコードを使用します。
AxisProperties.setProperty("axis.socketSecureFactory","org.Apache.axis.components.net.SunFakeTrustSocketFactory");