2016-07-01 88 views
4

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)に変更を加えたくありません。

答えて

4
-Dcom.sun.net.ssl.checkRevocation=false 

(いくつかの追加設定で)このオプションは、証明書の失効ステータスの証明書発行者へのオンラインチェックができます。あなたが探しているものではありません。

両方のアプリケーションが同じのTomcatに配備されたので、私は別のJVMのコンテキストで実行

アプリケーション証明書の有効期限のチェック/例外を無視する/します。myapplicationを期待。 TrustManager/ignoreexpiredアプリケーションの変更は、他のアプリケーションには影響しません。

JVMが使用するトラストストアに期限切れの証明書を含めることができます。 TrustoreManagerは、トラストストアに明示的に含まれている証明書の有効期限をチェックしません。キーツールまたはGUI KeyStore explorerを使用してJKSを作成し、証明書(最後の証明書ではなく、ルート)を挿入し、

-Djavax.net.ssl.trustStore=/path/to/truststore 
-Djavax.net.ssl.trustStorePassword=truststorepassword 

を通じてのTomcatでグローバルにそれを使用します。また、jre/lib/security/cacerts

で、デフォルトのJVMのトラストストアを更新することができます
関連する問題