Hi Sean,<br><br>I am using Open JDK 6.  Are the indirect CRL bugs in JDK 6 documented anywhere?  Are there any workarounds?<br><br>I am setting enableCRLDP.<br><br>Thanks, Dave<br><br><div class="gmail_quote">On Tue, Jun 28, 2011 at 5:46 AM, Sean Mullan <span dir="ltr"><<a href="mailto:sean.mullan@oracle.com">sean.mullan@oracle.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Are you using JDK 7? There were some bugs fixed with indirect CRLs in JDK 7.<br>
<br>
Also, make sure you set the system property com.sun.security.enableCRLDP to the<br>
value true when running, ex: java -Dcom.sun.security.<u></u>enableCRLDP=true ...<br><font color="#888888">
<br>
--Sean</font><div><div></div><div class="h5"><br>
<br>
On 6/28/11 1:05 AM, Xuelei.Fan@Oracle.Com wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Can you provide the code to reproduce the exception? Or is it possible attach<br>
the CertPath building debugger log?<br>
<br>
Xuelei<br>
<br>
On Jun 28, 2011, at 11:59 AM, David Pomeroy<<a href="mailto:dfpomeroy@gmail.com" target="_blank">dfpomeroy@gmail.com</a>>  wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hello All,<br>
<br>
I am trying to get a servlet to download and check a CRL.  The CRLDP is in<br>
the client's certificate and the CRL is marked "indirect CRL" so that it<br>
can be signed by a different key than the client cert issuer.  The<br>
following block of code is invoked but the DistributionPointFetcher can't<br>
seem to build a valid path and a CRLException is thrown.  My assumption was<br>
this would work if I included the CRL signing certificate in my truststore.<br>
What I find odd while stepping through this in a debugger is that the<br>
"certStores" object contains only the client certificate which is to be<br>
validated, so it makes sense that X509CertSelector doesn't find the right<br>
cert in there.<br>
<br>
Has anyone got indirect CRLs validated before?  I'd be interested in the<br>
details of a test setup that works.  I can provide more details of my test<br>
setup if necessary.<br>
<br>
Thanks, David<br>
<br>
<br>
// Obtain and validate the certification path for the complete // CRL<br>
issuer (if indirect CRL). If a key usage extension is present // in the CRL<br>
issuer's certificate, verify that the cRLSign bit is set. if (indirectCRL)<br>
{ X509CertSelector certSel = new X509CertSelector();<br>
certSel.setSubject(crlIssuer.<u></u>asX500Principal()); boolean[] crlSign =<br>
{false,false,false,false,<u></u>false,false,true}; certSel.setKeyUsage(crlSign);<br>
PKIXBuilderParameters params = null; try { params = new<br>
PKIXBuilderParameters (Collections.singleton(anchor)<u></u>, certSel); } catch<br>
(<u></u>InvalidAlgorithmParameterExcep<u></u>tion iape) { throw new CRLException(iape);<br>
} params.setCertStores(<u></u>certStores); params.setSigProvider(<u></u>provider); try {<br>
CertPathBuilder builder = CertPathBuilder.getInstance("<u></u>PKIX");<br>
PKIXCertPathBuilderResult result = (PKIXCertPathBuilderResult)<br>
builder.build(params); prevKey = result.getPublicKey(); } catch (Exception<br>
e) { throw new CRLException(e); } }<br>
</blockquote></blockquote>
</div></div></blockquote></div><br>