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

如何在java中将byte[]类型转换为证书类型?,java,certificate,bytearray,Java,Certificate,Bytearray,我有一个byte[]证书数据,我想将这个byte[]类型更改为certificate类型。我怎样才能做到这一点 现在我使用了CertificateFactory.generateCertificate(InputStream inStream) 但出现错误Certificate=cf.generateCertificate(bais)在这一行 错误:java.security.cert.CertificateParsingException:java.io.IOException:ObjectI

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

现在我使用了
CertificateFactory.generateCertificate(InputStream inStream)

但出现错误Certificate=cf.generateCertificate(bais)在这一行

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

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

您可以使用生成证书

以下是生成X509证书的示例:

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

当我尝试在CSR上使用CertificateFactory.generateCertificate时,出现了相同的错误。 所以我认为你的问题可能是一样的;i、 e.字节数组不包含证书,但包含证书签名请求。 如果您确实需要阅读证书签名请求(如我所做的),请使用以下代码(灵感来自):

导入sun.security.pkcs.PKCS10; ... PKCS10 csr=新的PKCS10(Base64Utils.decode(csrPem1.getBytes());
使用Base64Utils取决于输入数据的格式。

现在,我使用的就是这样的
CertificateFactory cf=CertificateFactory.getInstance(“X.509”);证书证书=cf.generateCertificate(新的ByteArrayInputStream(byteArray))但我有一个错误java.security.cert.CertificateFactory.generateCertificate(未知源)。请给我解释一下。谢谢。@shariphwar给出异常类型而不是它发生的位置(或两者都给出)会有帮助…错误:java.security.cert.CertificateParsingException:java.io.IOException:ObjectIdentifier()--数据不是对象ID(tag=49)我编辑我的问题请检查我的问题并回答我。谢谢
CertificateFactory cf   = CertificateFactory.getInstance("X.509");
Certificate certificate = cf.generateCertificate(new ByteArrayInputStream(buf));
import sun.security.pkcs.PKCS10; ... PKCS10 csr = new PKCS10(Base64Utils.decode(csrPem1.getBytes()));