我有一个证书数据的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);

但是发生了错误证书证书= cf.generateCertificate(bais); 在这一行。

错误: java.security.cert.CertificateParsingException:java.io.IOException:ObjectIdentifier()-数据不是对象ID(标记= 49)

为什么会发生此错误?这段代码有什么问题?请给我解释一下。谢谢。

最佳答案

您可以使用 CertificateFactory.generateCertificate(InputStream inStream) 生成证书。

这是生成X509证书的示例:

CertificateFactory cf   = CertificateFactory.getInstance("X.509");
Certificate certificate = cf.generateCertificate(new ByteArrayInputStream(buf));

08-25 10:57