java - 无法以 PEM 文件格式写入使用 org.bouncycaSTLe.asn1.pkcs.CertificationRequest 生成的 CSR

标签 java x509certificate bouncycastle

我正在使用带有 bcprov-jdk15on-147 jar 的 BouncyCaSTLe API 生成 CSR。

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()));

我将这个对象传递给我的调用函数:

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);

但我得到以下异常:

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

最佳答案

更好的解决方案是使用 PemObject。

    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);

关于java - 无法以 PEM 文件格式写入使用 org.bouncycaSTLe.asn1.pkcs.CertificationRequest 生成的 CSR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10040977/

相关文章:

ssl - ServletRequest.getAttribute ("javax.servlet.request.X509Certificate") 返回 null

使用 BouncyCaSTLe 弃用方法的 Paypal 按钮加密的 Java 代码 - 如何修复?

java - 从 RSA .pem 文件中获取私钥

java - BouncyCaSTLe 和 SunJCE 在 Cipher::update 和 Cipher::doFInal 中的不同结果

java - 如何在java中使用split创建二维数组列表?

java - JUnit 4.xx (Java) 尝试获取行覆盖范围时出现 Mockito 问题

java - Selenium 不会读取当前输入值

java - ActiveMQ发送和接收XML文件的文件夹

java - 如何以编程方式将 CSR 提交给认证机构?

azure - 如何保护 Azure 网站和数据部署的安全