我有一个 X509Certificate 并将其写入/打印到文件中,如下所示。(我没有写编码字节,因为我想读取证书的内容)
X509Certificate cer = generateCertificate(); // cer is DER encoded
writeToFile( cer.toString() ); // cer.toString() converts DER to UTF/ASCII???
稍后我想将该文件(上图)作为字符串读取并创建一个新的 X509Certificate。
String cerStr = readCerFromFile(); // Read what is written above. In ASCII/ UTF format
ByteArrayInputStream bais = null;
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
bais = new ByteArrayInputStream(cerStr.getBytes());
return (X509Certificate) cf.generateCertificate(bais);
} ...
这会引发以下异常。
Java.security.cert.CertificateParsingException: Invalid DER-encoded certificate data
很明显,我没有将 cerStr 转换为 DER 格式(而且我不知道是否可以转换为 DER )。谁能解释一下如何从未编码的字符串创建 X509Certicate。
提前致谢。!