java如何解读证书里的内容(通过string 来生成X509Certificate对象)
我可以读到证书文件里的内容,如下:假如证书为zyj.crtFilefile=newFile("D:\\zyj.crt");InputStreaminStream=newF...
我可以读到证书文件里的内容,如下:假如证书为zyj.crt
File file = new File("D:\\zyj.crt");
InputStream inStream = new FileInputStream(file);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate oCert = (X509Certificate)cf.generateCertificate(inStream);
info = oCert.getSubjectDN().getName();
System.out.println("证书拥有者:"+info);
但现在的问题的,我的项目得到的不是证书文件,而是一个string。 这个string里的内容和zyj.crt文件里的内容是一样的。内容片断如下:
-----BEGIN CERTIFICATE----- MIICMjCCAZsCCQD3/xw1j77JATANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJD
.....省略
-----END CERTIFICATE-----
我怎么通过这个string 来生成X509Certificate对象 然后读取里面的内容呢?
笨办法 就是把这个String 写到一个文件里,然后用上面的方法读这个文件。但这样效率太低了。
我还试着把String 转成inputStream,
InputStream inStream = new ByteArrayInputStream(caString.getBytes("UTF-8"));用这句替代 上面写的第二行代码。但是在执行第四行的时候报错。。
java.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Unsupported encoding 展开
File file = new File("D:\\zyj.crt");
InputStream inStream = new FileInputStream(file);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate oCert = (X509Certificate)cf.generateCertificate(inStream);
info = oCert.getSubjectDN().getName();
System.out.println("证书拥有者:"+info);
但现在的问题的,我的项目得到的不是证书文件,而是一个string。 这个string里的内容和zyj.crt文件里的内容是一样的。内容片断如下:
-----BEGIN CERTIFICATE----- MIICMjCCAZsCCQD3/xw1j77JATANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJD
.....省略
-----END CERTIFICATE-----
我怎么通过这个string 来生成X509Certificate对象 然后读取里面的内容呢?
笨办法 就是把这个String 写到一个文件里,然后用上面的方法读这个文件。但这样效率太低了。
我还试着把String 转成inputStream,
InputStream inStream = new ByteArrayInputStream(caString.getBytes("UTF-8"));用这句替代 上面写的第二行代码。但是在执行第四行的时候报错。。
java.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Unsupported encoding 展开
2个回答
展开全部
那个字符串是Base64编码后的
试着把String 转成inputStream,
InputStream inStream = new ByteArrayInputStream(caString.getBytes('UTF-8'));用这句替代 上面写的第二行代码。但是在执行第四行的时候报错。。
java.security.cert.CertificateException: Could not parse certificate: java.io.IOException: Unsupported encoding
就是把这个String 写到一个文件里,然后用上面的方法读这个文件。
展开全部
那个字符串是Base64编码后的
更多追问追答
追问
那我应该怎么办呢?Base64编码没接触过。。
InputStream inStream = new ByteArrayInputStream(caString.getBytes("UTF-8"))
这句应该怎么写呢?
InputStream inStream = new ByteArrayInputStream(caString.getBytes("Base64"))
这样吗。。
追答
不是你这样写的,首先那个字符串要把 头信息-----BEGIN CERTIFICATE----- 和 尾信息 -----END CERTIFICATE----- 去掉 ,中间的是证书信息
String scert = "XXXXXXXXXXXX";
// Base64解码
BASE64Decoder decoder = new BASE64Decoder();
byte[] byteCert = decoder.decodeBuffer(scert);
//转换成二进制流
ByteArrayInputStream bain = new ByteArrayInputStream(byteCert);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate oCert = (X509Certificate)cf.generateCertificate(bain);
String info = oCert.getSubjectDN().getName();
System.out.println("证书拥有者:"+info);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询