使用 generateCertificate(InputStream inStream) 通过String生成x.509证书的两种情况

使用 java.security.cert.CertificateFactory.generateCertificate(InputStream inStream) 通过String生成x.509证书实体的两种情况

证书实体certEntityString如下

-----BEGIN CERTIFICATE-----
MIIDsjCCApqgAwIBAgIERqyYvTANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJj
bjEhMB8GA1UECgwYSU5GT1NFQyBUZWNobm9sb2dpZXMgUlNBMRQwEgYDVQQDDAtS
(省略中间部分…)
8dF/wIGcT71/ERRrlB0p+AZ+B+2wKHBjBVLyb0MIZNo+8xS20eBgEBa8UsU2fZzT
FSNYGfoL2sfBQ4e5hL3cFrudNPOfeIP0VQ9SmwcGZxUmITvhzqg=
-----END CERTIFICATE-----

首先,CertificateFactory certFactory = CertificateFactory.getInstance(“X.509”),这一步都是一样的.
InputStream in = null;

String里面没有"-----BEGIN CERTIFICATE-----“和”-----END CERTIFICATE-----"

如果证书实体String不包含开始结束标识,需要将该base64字符串解码,再生成证书

in=new ByteArrayInputStream(new BASE64Decoder().decodeBuffer(certEntityString));

Certificate cert = certFactory.generateCertificate(in);

return (X509Certificate) cert;

String里面含有"-----BEGIN CERTIFICATE-----“和”-----END CERTIFICATE-----"

如果证书实体String是完整的,包含开始结束标识,需要将字符串转为byte[ ]

in=new ByteArrayInputStream(certEntityString.getBytes(“utf-8”));

Certificate cert = certFactory.generateCertificate(in);

return (X509Certificate) cert;

不清楚是generateCertificate( )方法的具体实现,但这两种情况都试了一下,只有像上面那样,按不同情况转化字符串,才能正确解析出证书.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值