我试图打开/解析X509证书的公钥并从文件中检索特定信息。 虽然我几周前才开始编写Java,但是我使用Java作为语言来实现它,所以noob在这里:)
import java.io.FileInputStream;
import java.io.IOException;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
public class CertificateTest {
public static void main (String[] args) throws CertificateException, IOException{
FileInputStream fis = new FileInputStream("CertificateFile.pem");
BufferedInputStream bis = new BufferedInputStream(fis);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) cf.generateCertificate(bis);
System.out.print(cert);
}
}
好的,我可以解析文件并将其打印在控制台上,但文件没有"渲染"好.. 文件的某些部分似乎没问题,但其他部分就像这样:
0E.!.....W>._...
.....Q.9.u-U....
P...". ^..6...>Q
U.3..I.k....K...
.e.....
我想要检索的是:
System.out.print(cert.getSubjectUniqueID());
它返回null。这可能是正确的,因为这是一个可选字段,但我几乎可以肯定该字段存在。
当我打印方法时
System.out.print(cert.getSubjectX500Principal());
输出是:
OID.2.5.4.45=#03090090B3D51F30020000, OU=03
字节串:90B3D51F30020000实际上是我想从文件中检索的,所以我认为.getSubjectUniqueID应该返回这个值。或整个字符串03090090B3D51F30020000。
此文件使用ASN1表示法编码。
所以,如果有人能提供一些关于这里发生的事情的见解,我将不胜感激。因为我觉得我的知识停在这里。而且我已经搜索了很多,并且找不到与此类似的任何问题。 问候。