Bouncycastle: CertificateFactory.generateCertificate выдает «неправильный размер последовательности для сертификата» на одном компьютере, но не на другом - PullRequest
0 голосов
/ 22 февраля 2011

Я пытаюсь открыть файл p7b и прочитать из него сертификаты CA. Ниже мой код. На одном компьютере он работает нормально, но на другом компьютере вызов certFactory.generateCertificate вызывает исключение

Error Message:java.lang.IllegalArgumentException: sequence wrong size for a certificate

На обеих машинах у меня один и тот же файл p7b и одни и те же баночки bouncycastle. Компьютер, на котором работает, - это Windows Xp, а тот, на котором он не работает, - серверный компьютер с Windows 2007 Это 64-битная машина, но я использую только 32-битную jvm.

    CertificateFactory certFactory = CertificateFactory.getInstance("X.509",
            new BouncyCastleProvider());
    java.security.cert.Certificate cert = null;
    FileInputStream inStream = new FileInputStream("");
    ArrayList<java.security.cert.Certificate> certificates = new ArrayList<java.security.cert.Certificate>();
    CAService caService = null;
    caService.getCertificateAuthority().setCaCerts(new ArrayList<String>());

    while ((cert = certFactory.generateCertificate(inStream)) != null)
    {
        certificates.add(cert);
        StringWriter swrtr = new StringWriter();
        PEMWriter writer = new PEMWriter(swrtr);
        writer.writeObject(cert);
        writer.flush();
        caService.getCertificateAuthority().getCaCerts().add(swrtr.toString());
    }

Я даже написал отдельную программу, и я даже запускаю явное указание java.exe для использования, но на одном компьютере я столкнулся с тем же исключением.

c: \ jdk1.5.0_14 \ jre \ bin \ java.exe -classpath.; Bcprov-jdk15-143.jar MSCAConfigurator

Exception in thread "main" java.security.cert.CertificateException: java.lang.IllegalArgumentException: sequence wrong size for a certificate
        at org.bouncycastle.jce.provider.JDKX509CertificateFactory.engineGenerateCertificate(Unknown Source)
        at java.security.cert.CertificateFactory.generateCertificate(CertificateFactory.java:271)
        at MSCAConfigurator.main(MSCAConfigurator.java:31)
Caused by: java.lang.IllegalArgumentException: sequence wrong size for a certificate
        at org.bouncycastle.asn1.x509.X509CertificateStructure.<init>(Unknown Source)
        at org.bouncycastle.asn1.x509.X509CertificateStructure.getInstance(Unknown Source)
        at org.bouncycastle.jce.provider.JDKX509CertificateFactory.readPEMCertificate(Unknown Source)

У меня есть банки с неограниченной политикой силы.

C: \ jdk1.5.0_14 \ jre \ lib \ security> dir * .jar

Том на диске C не имеет метки.

Серийный номер тома: D214-CB94

Каталог C: \ jdk1.5.0_14 \ jre \ lib \ security

09/13/2004 16:12 2486 local_policy.jar

09/13/2004 16:12 2472 US_export_policy.jar

Что не так с этой машиной? Кто-нибудь, пожалуйста, помогите, прежде чем я застрелюсь.

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Кросс-пост и, видимо, решил проблему здесь http://www.coderanch.com/t/528193/Security/CertificateFactory-generateCertificate-gives-sequence-wrong

0 голосов
/ 23 февраля 2011

Согласно javadocs, CertificateFactory.generateCertificates() поддерживает формат PKCS # 7, но CertificateFactory.generateCertificate() не поддерживает.

...