在r146之前的版本中,可以直接创建X509Certificate对象。现在,该应用程序接口已被弃用,新的应用程序接口仅提供X509CertificateHolder对象。
我找不到一种将X509CertificateHolder转换为X509Certificate的方法。
如何做到这一点?
发布于 2012-01-22 20:04:55
我会回答我自己的问题,但不会删除它,以防其他人遇到同样的问题:
return new JcaX509CertificateConverter().setProvider( "BC" )
.getCertificate( certificateHolder );对于属性证书:
return new X509V2AttributeCertificate( attributeCertificateHolder.getEncoded() );不是很好,因为它是编码和解码,但它工作。
发布于 2017-06-29 22:48:18
另一个选项是这个:)
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
InputStream in = new ByteArrayInputStream(certificateHolder.getEncoded());
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(in);发布于 2017-06-30 18:03:34
这是一种将X509CertificateHolder发送到X509Certificate和toString的可能性。(代码的第一句话无关紧要)
X509CertificateHolder selfSignedCertificate = CertificateUtils.selfSignCertificate(certificationRequest, keyPair.getPrivate());
byte[] content = selfSignedCertificate.getEncoded();
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) certificateFactory.generateCertificate(new ByteArrayInputStream(content));
logger.debug("cert: {}", cert.toString());.
https://stackoverflow.com/questions/6370368
复制相似问题