Java - 如何将X509Certificate链数据导出到Base64编码的证书文件?

时间:2013-05-28 17:29:34

标签: java base64 x509certificate

当我在套接字连接中的SSL握手上收到X509Certificate链时,我必须将X509Certificate链导出到base64编码的.cer文件。

我试过下面的代码。但文件内容与原始证书不同。

private static final String BEGIN_CERT = "-----BEGIN CERTIFICATE-----";

private static final String END_CERT = "-----END CERTIFICATE-----";

X509Certificate[] x509Certificates;


   --------------
   --------------


  String certContent="";

  for(int i=0;i<x509Certificates.length;i++)   
  {  

         certContent += Base64.encode(x509Certificates[i].getEncoded());

  } 



BufferedWriter writer = new BufferedWriter(new FileWriter("mycert.cer"));

writer.write(BEGIN_CERT);

writer.newLine();

writer.write(certContent);

writer.newLine();

writer.write(END_CERT);

writer.close();

上述代码中的任何建议/更正?

1 个答案:

答案 0 :(得分:0)

我相信您的代码将证书连接在一起,然后在整个事物周围添加BEGIN和END标记。

而是尝试将BEGIN / END标记放在同一文件中的EACH证书周围。

例如

-----BEGIN CERTIFICATE-----
<Base64 cert1 data>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<Base64 cert2 data>
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
<Base64 certN data>
-----END CERTIFICATE-----