【发布时间】:2012-07-13 05:05:49
【问题描述】:
我有一个 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 )。谁能解释一下如何从未编码的字符串创建 X509Certcate。
提前致谢!
【问题讨论】:
-
.toString()没有任何意义。您应该从cer.getEncoded()写入编码字节。使用X509Certificate.toString只是在自取其辱。所以不要那样做,至少不要持久化证书。 -
感谢 GregS。 .toString() 可以解码和打印 DER 编码的证书吗?
-
可以目视检查内容。
标签: cryptography public-key-encryption x509