Javaで有効期限切れの証明書を許可するコマンドラインフラグはありますか?Javaで期限切れの証明書を許可する
今は、証明書の有効期限が切れているので、次の例外が発生します。
Caused by: java.security.cert.CertificateExpiredException: NotAfter: {PAST DATETIME}
at sun.security.x509.CertificateValidity.valid(CertificateValidity.java:274)
at sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:629)
at sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:602)
at org.apache.ws.security.validate.SignatureTrustValidator.validateCertificates(SignatureTrustValidator.java:103)
私は、私たちのアプリケーションは、パス/myapplication
下のtomcatで実行されている
-Dcom.sun.net.ssl.checkRevocation=false
証明書の有効期限のチェックを無視していない、次のコマンドラインフラグを試してみました。そこで別のアプリケーション/ignorecertificate
を作成し、同じTomcatのwebappフォルダにデプロイしました。このquestionで受け入れられた回答に従って、/ignoreexpired
アプリケーションの起動時に次のコードを実行します。
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
};
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
両方のアプリケーションが同一のTomcatに配備されたので
は、私は(両方のアプリケーションが同じJavaインスタンスを共有Bcoz)証明書の有効期限のチェック/例外を無視する/myapplication
を期待しました。しかし、まだそれは動作していません。私は別のアプリケーションでこの無視コードを実行します(
/ignoreexpired
)私は現在のアプリケーション(
/myapplication
)に変更を加えたくありません。