我有一个X509Certificate,我写/打印到一个文件如下。 (我不写编码的字节,因为我想读的证书模板的内容)从DER解码的字符串创建一个X509Certicate
X509Certificate cer = generateCertificate(); // cer is DER encoded
writeToFile(cer.toString()); // cer.toString() converts DER to UTF/ASCII???
后来我想读这个文件(以上)的字符串,并创建一个新的X509证书。
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。
在此先感谢。
'的ToString()'没有任何意义你应该写的编码。从'cer.getEncoded()'字节。使用'X509Certificate.toString'只是搬起石头砸自己的脚。所以,不这样做,至少不会坚持证书。 – 2012-07-13 21:31:11
感谢名单GregS。是的ToString()OK了解码和打印DER编码的证书? – Fahim 2012-07-15 04:54:03
它是罚款的内容目视检查。 – 2012-07-15 12:24:25