On 6/28/11 1:01 PM, David Pomeroy wrote:
Hi Sean,

I am using Open JDK 6.  Are the indirect CRL bugs in JDK 6 documented anywhere?
Are there any workarounds?

See:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6509162
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6542169

No known workarounds. It would help if you tested with JDK 7 [1] so we could verify if the problem has fixed.

If it still fails with JDK 7, please file a bug (and attach a test program) at http://bugs.sun.com

Thanks,
Sean

[1] http://jdk7.java.net/download.html


I am setting enableCRLDP.

Thanks, Dave

On Tue, Jun 28, 2011 at 5:46 AM, Sean Mullan <sean.mul...@oracle.com
<mailto:sean.mul...@oracle.com>> wrote:

    Are you using JDK 7? There were some bugs fixed with indirect CRLs in JDK 7.

    Also, make sure you set the system property com.sun.security.enableCRLDP to 
the
    value true when running, ex: java -Dcom.sun.security.__enableCRLDP=true ...

    --Sean


    On 6/28/11 1:05 AM, xuelei....@oracle.com wrote:

        Can you provide the code to reproduce the exception? Or is it possible
        attach
        the CertPath building debugger log?

        Xuelei

        On Jun 28, 2011, at 11:59 AM, David Pomeroy<dfpome...@gmail.com
        <mailto:dfpome...@gmail.com>>  wrote:

            Hello All,

            I am trying to get a servlet to download and check a CRL.  The CRLDP
            is in
            the client's certificate and the CRL is marked "indirect CRL" so 
that it
            can be signed by a different key than the client cert issuer.  The
            following block of code is invoked but the DistributionPointFetcher
            can't
            seem to build a valid path and a CRLException is thrown.  My
            assumption was
            this would work if I included the CRL signing certificate in my
            truststore.
            What I find odd while stepping through this in a debugger is that 
the
            "certStores" object contains only the client certificate which is 
to be
            validated, so it makes sense that X509CertSelector doesn't find the
            right
            cert in there.

            Has anyone got indirect CRLs validated before?  I'd be interested 
in the
            details of a test setup that works.  I can provide more details of
            my test
            setup if necessary.

            Thanks, David


            // Obtain and validate the certification path for the complete // 
CRL
            issuer (if indirect CRL). If a key usage extension is present // in
            the CRL
            issuer's certificate, verify that the cRLSign bit is set. if
            (indirectCRL)
            { X509CertSelector certSel = new X509CertSelector();
            certSel.setSubject(crlIssuer.__asX500Principal()); boolean[] 
crlSign =
            {false,false,false,false,__false,false,true};
            certSel.setKeyUsage(crlSign);
            PKIXBuilderParameters params = null; try { params = new
            PKIXBuilderParameters (Collections.singleton(anchor)__, certSel); }
            catch
            (__InvalidAlgorithmParameterExcep__tion iape) { throw new
            CRLException(iape);
            } params.setCertStores(__certStores);
            params.setSigProvider(__provider); try {
            CertPathBuilder builder = CertPathBuilder.getInstance("__PKIX");
            PKIXCertPathBuilderResult result = (PKIXCertPathBuilderResult)
            builder.build(params); prevKey = result.getPublicKey(); } catch
            (Exception
            e) { throw new CRLException(e); } }


Reply via email to