当我在套接字连接中的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();
上述代码中的任何建议/更正?
答案 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-----