2012-04-06 6 views
4

Ich generiere CSR mit BouncyCastle APIs mit bcprov-jdk15on-147-Jars.CSR konnte nicht erstellt werden, das mit org.bouncycastle.asn1.pkcs.CertificationRequest im PEM-Dateiformat erstellt wurde

CertificationRequestInfo certInfo = new CertificationRequestInfo(subject, subKeyInfo, new DERSet(attribute)); 
org.bouncycastle.operator.ContentSigner sigGen = null; 
sigGen = new JcaContentSignerBuilder("SHA1withRSA").setProvider("BC").build(privateKey); 
org.bouncycastle.asn1.pkcs.CertificationRequest ctest = new org.bouncycastle.asn1.pkcs.CertificationRequest(certInfo,sigAlgName,new DERBitString(sigGen.getSignature())); 

Ich Bestehen dieser obejct meiner Aufruf Funktion:

GenerateCSR gcsr = GenerateCSR.getInstance(); 
System.out.println("Public Key:\n"+gcsr.getPublicKey().toString()); 

System.out.println("Private Key:\n"+gcsr.getPrivateKey().toString()); 
org.bouncycastle.asn1.pkcs.CertificationRequest csr = gcsr.getCSR("IMO"); 
System.out.println("CSR Request Generated!!"); 
FileWriter fcsr = new FileWriter("C:\\test.txt"); 
PEMWriter w1 = new PEMWriter(fcsr); 
w1.writeObject(csr); 

aber ich bin die unten Ausnahme bekommen:

Exception in thread "main" org.bouncycastle.util.io.pem.PemGenerationException: unknown object passed - can't encode. 
    at org.bouncycastle.openssl.MiscPEMGenerator.createPemObject(Unknown Source)" 

Antwort

1

Ich landete pem Objekt von Hand wie diese zu schaffen. .

String code = "-----BEGIN CERTIFICATE REQUEST-----\n"; 
    code += new String(Base64.encodeBase64Chunked(request.getEncoded())); 
    code += "-----END CERTIFICATE REQUEST-----"; 
    System.out.println(code); 

Ich bin rate Es ist ein Fehler, dass PemWriter das CertificationRequest-Objekt nicht ausgeben kann, da es aussieht, als sei BouncyCastle v1.47 noch voller anderer Fehler.

4

Bessere Lösung ist PemObject zu verwenden.

String type = "CERTIFICATE REQUEST"; 
    byte[] encoding = pkcs10.getEncoded(); 

    PemObject pemObject = new PemObject(type, encoding); 

    StringWriter str = new StringWriter(); 
    PEMWriter pemWriter = new PEMWriter(str); 
    pemWriter.writeObject(pemObject); 
    pemWriter.close(); 
    str.close(); 

    System.out.println(str); 
Verwandte Themen