有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中将字节[]类型转换为证书类型?

我有byte[]个证书数据,我想将这个byte[]类型更改为Certificate类型。我怎样才能做到这一点

现在我用CertificateFactory.generateCertificate(InputStream inStream)

byte[] csr = getCSR(cn, ou, org, loc, state, country,email);
CertificateFactory  cf = CertificateFactory.getInstance("X.509");
ByteArrayInputStream bais = new ByteArrayInputStream(csr);
Certificate certificate = cf.generateCertificate(bais);

但出现错误Certificate=cf.generateCertificate(bais)

错误:java。安全cert.CertificateParsingException:java。伊奥。IOException:ObjectIdentifier()--数据不是对象ID(tag=49)

为什么会发生这个错误?这个代码怎么了?请解释一下。谢谢


共 (2) 个答案

  1. # 1 楼答案

    可以使用^{}生成证书

    下面是一个生成X509证书的示例:

    CertificateFactory cf   = CertificateFactory.getInstance("X.509");
    Certificate certificate = cf.generateCertificate(new ByteArrayInputStream(buf));
    
  2. # 2 楼答案

    当我尝试使用CertificateFactory时,我也犯了同样的错误。生成企业社会责任证书。 所以我认为你的问题也可能是一样的;i、 e.字节数组不包含证书,但包含证书签名请求。 如果您真的需要阅读证书签名请求(就像我一样),请使用以下代码(受http://www.journaldev.com/223/generating-a-certificate-signing-request-using-java-api启发):

    import sun.security.pkcs.PKCS10;
    ...
    PKCS10 csr = new PKCS10(Base64Utils.decode(csrPem1.getBytes()));
    

    使用Base64Utils取决于输入数据的格式