作者:kyf召世星bdc | 来源:互联网 | 2022-12-07 04:34
1> dave_thompso..:
x5c是(X.509)证书,不是公共密钥。实际上,如果需要的话,它是由一系列证书组成的链,尽管此示例是单个自签名证书。证书的PEM标头行和尾行在全部大写形式中应显示“ BEGIN CERTIFICATE”和“ END CERTIFICATE”,并且base64应该添加换行符,这与JWT格式(base64但不是 PEM)不同。
读取证书使用java.security.cert.CertificateFactory
。(这也可以处理一条链,就像它调用PkiPath的一系列证书或标准的(通常称为p7b或p7c的)(琐碎的)PKCS7消息一样。)要么为其提供正确的 PEM格式,要么为其提供正确的二进制文件/ DER格式;后者更容易,因为它只是JWT x5c格式的base64解码(就像现在所做的那样,在将其放入错误的keyspec中,但java.util.Base64.Decoder
不需要base64字节之前,它可以使用String
)。如果只需要pubkey,则可以从证书中获取。做类似的事情:
String certb64 = "...";
byte[] certder = Base64.getDecoder().decode(certb64);
InputStream certstream = new ByteArrayInputStream (certder);
Certificate cert = CertificateFactory.getInstance("X.509").generateCertificate(certstream);
PublicKey key = cert.getPublicKey();