0

JavaでデフォルトのCRLパスを設定する方法。今、私はこれを取得するCRL配布ポイント含有していない証明書の通り:JavaがCRLパスのデフォルト値を設定しました

PKIX path validation failed: java.security.cert.CertPathValidatorException: Could not determine revocation status 

を私が証明書でcom.sun.security.enableCRLDPcom.sun.net.ssl.checkRevocationの組み合わせを試してみましたそれを含有しないCRLDPを含む。結論としては、上記のプロパティを設定しても、CRLDPを含まない証明書を持っていると例外が発生します。つまり、 ' は私の現在のシステムで必要な動作ではありません。

+0

明らかに、すべての証明書にCRL DPを指定する必要があります(ルートCA証明書を除く)。インターネット対応PKIのCDP/AIA拡張機能の設計に関するブログ記事を書きました。この記事はMicrosoft ADCS専用ですが、PKIの開発に使用しているソフトウェアには適しています。https://www.sysadmins.lv/blog-en/designing-crl-distribution-points-and-authority-information -access-locations.aspx – Crypt32

+0

しかし、既定のパスを指定する方法があるはずです – mdavid

答えて

0

私はローカルのCRLファイルを指定する方法を見つけたと思うが、それはトリックを行うようだ。この場合

 // initialize a new TMF with our keyStore 
     TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX", "SunJSSE"); 

     CertPathParameters pkixParams = new PKIXBuilderParameters(keyStore, new X509CertSelector()); 

     // Activate certificate revocation checking 
     ((PKIXBuilderParameters) pkixParams).setRevocationEnabled(true); 

     List<CertStore> certStores = new ArrayList<>(1); 

     Collection<CRL> crls = new HashSet<>(1); 
     crls.add(CertificateFactory.getInstance("X.509").generateCRL(new java.io.FileInputStream("your_local_file.crl"))); 

     certStores.add(CertStore.getInstance("Collection", new CollectionCertStoreParameters(crls))); 
     ((PKIXBuilderParameters) pkixParams).setCertStores(certStores); 

     System.setProperty("com.sun.security.enableCRLDP", "true"); 
     tmf.init(new CertPathTrustManagerParameters(pkixParams)); 

     // acquire X509 trust manager from factory 
     TrustManager tms[] = tmf.getTrustManagers(); 
     for (TrustManager tm : tms) { 
      if (tm instanceof X509TrustManager) { 
       trustManager = (X509TrustManager) tm; 
       break; 
      } 
     } 

証明書は、それが例外をスローしないであろうと、私が与えたファイルからの失効状態を判断しようとするCRL配布ポイントが含まれていない場合。しかし、指定されたローカルCRLファイルの内容が適切な形式でない場合はスキップしないで、証明書にCRL配布ポイントが含まれていても例外が発生します。

いずれにしても、より洗練された回答が待ち望まれています。

+0

your_local_file.crlを更新するメカニズムがあると思います。既存のCRLファイルを新しいものに置き換え、すでに読み込まれたCRLが期限切れになったときに、このアプローチでyour_local_file.crlを再読み込みしますか? – ramtech

関連する問題