2016-09-24 7 views
0

GlassFishサーバー上でSpringSecurity CAS認証を設定しようとしていますが、サーバーの有効期限が切れている自己署名証明書があります。私は、証明書をインポートすることができたが、私は "mはまだ、次のエラーを取得:。グラスフィッシュSSLの期限切れ証明書を信頼する方法

FAILURE: javax.net.ssl.SSLHandshakeException : sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed

だから、明らかにこれは我々がタイムスタンプ(期限切れの証明書)の誤差を持っていることを意味し

私が読んだかもしれません方法は、この特定の証明書を処理し、それをホワイトリストに登録するためのカスタムSSLContextを書くために - しかし、私はミックスにカスタムSSLContextを注入する方法を上本当に困惑している

は私がweb.xmlで行うか、単にに入れ、この何かを。コードなど何ですか?

ありがとう

答えて

0

まあ、私はそれを行うにはひどい方法を見つけたようです。私は自分のプロジェクトにこのSSLHelperクラスを投げ、それだけで魔法の事

import com.sun.net.ssl.HostnameVerifier; 
import com.sun.net.ssl.HttpsURLConnection; 
import com.sun.net.ssl.SSLContext; 
import com.sun.net.ssl.TrustManager; 
import com.sun.net.ssl.X509TrustManager; 
import java.security.KeyManagementException; 
import java.security.KeyStore; 
import java.security.KeyStoreException; 
import java.security.NoSuchAlgorithmException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.net.ssl.SSLSession; 
import javax.net.ssl.TrustManagerFactory; 
import javax.security.cert.CertificateException; 
import javax.security.cert.X509Certificate; 

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
/** 
* 
* @author jstein 
*/ 
public class SSLHelper { 

    static { 
     disableSslVerification(); 
    } 

    private static void disableSslVerification() { 
     try { 
      TrustManager[] trustAllCerts; 
      trustAllCerts = new TrustManager[]{new X509TrustManager() { 
       @Override 
       public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
        return null; 
       } 

       @Override 
       public boolean isClientTrusted(java.security.cert.X509Certificate[] xcs) { 
        return true; 
       } 

       @Override 
       public boolean isServerTrusted(java.security.cert.X509Certificate[] xcs) { 
        return true; 
       } 
      }}; 

      // Install the all-trusting trust manager 
      SSLContext sc = SSLContext.getInstance("SSL"); 
      sc.init(null, trustAllCerts, new java.security.SecureRandom()); 
      HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); 

      HostnameVerifier allHostsValid; 
      allHostsValid = new HostnameVerifier() { 

       @Override 
       public boolean verify(String string, String string1) { 
        return true; 
       } 
      }; 

      // Install the all-trusting host verifier 
      HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); 
     } catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
     } catch (KeyManagementException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

を行なったし、突然すべては:)

を働いています
関連する問題