摘要:我准备根据url获取一个x509证书文件,并对其进行操作。现在我 生成了一个X509Certificate实体并得到证书主体名;但是如果我直接将证书作为流打印,则失败。
具体如下:
//1----建立连接
URL url = new URL("https://a.com/download.cer?cmd=b;type=c;key=4");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
//2----得到输入流
DataInputStream dis = new DataInputStream(connection.getInputStream());
//3-----生成证书实体可以得到主体名
Certificate cert = cf.generateCertificate(dis);
X509Certificate t = (X509Certificate) cert;
System.out.println("主体名:" + t.getSubjectDN());
//4------得到证书文件流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int count;
byte[] buffer = new byte[1024];
//根本进入不了循环,难道和3冲突?
while ((count = dis.read(buffer)) != -1) {
System.out.println("is coming in?");
baos.write(buffer, 0, count);
}后来发现,注释掉3就不会冲突,但是如果向ByteArrayOutputStream 实例写完字节流 调用toByteArray()打印得到的字节数组,是一堆数字,我想得到如
-----BEGIN CERTIFICATE-----
98G2jBdkRR6jTBuV3FnVPcpwrddkGyrDY7lJMLFCIERcpuUvGfW12xKURYMLzHzy
zD/xDfg25KqJG82UKG+UgRpOfWhY5nLDb1uzzaXsBNN/CCMzDZ3f+CpTOyFMDnB6
kU7mwOD/6nwVS3Cf6OZi8r+Hm46WnNT6oGDEXbIaQCrGUGz87bJiuCWhrgDkYXqv
2RF0QMQkvebaHjDz17uacg==
-----END CERTIFICATE-----
的结果,应该怎么处理请高手指教,谢谢啦