从byte []生成X509Certificate?

Ale*_*lex 50 java x509certificate

是否有可能从byte []生成java.security.cert.X509Certificate?

And*_*yle 74

当然.

证书对象可以由CertificateFactory实例创建- 特别是,配置为创建X509证书的实例.这可以像这样创建:

CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
Run Code Online (Sandbox Code Playgroud)

然后,您需要传递一个包含证书字节的InputStream.这可以通过将字节数组包装在ByteArrayInputStream中来实现:

InputStream in = new ByteArrayInputStream(bytes);
X509Certificate cert = (X509Certificate)certFactory.generateCertificate(in);
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下,问题是byte []是基本64编码...错误消息是有点误导"空输入".也许它有时会帮助某人...... (3认同)
  • 感谢您的回答。但我在最后一行收到“(java.security.cert.CertificateException) java.security.cert.CertificateException: 无法解析证书: java.io.IOException: 空输入”。InputStream不为空,但抛出异常 (2认同)
  • 同样的事情一开始也发生在我身上,因为我没有仔细思考我在做什么。就我而言,这是因为我尝试使用密钥库中的字节而不是密钥库中的证书来执行上述操作。从密钥库中提取证书,获取编码字节,然后处理这些,这使得上面的答案对我有用。 (2认同)