1

如何在 java 的证书(DER 格式,即 .cer 文件)中显示主题的详细信息?例如:电子邮件、国家、姓名或单独的 OID 等。

可以从上面的代码中读取证书。也可以在 Android 中使用。谢谢 GreyBeardedGeek。但为了更详细地说明它(如好奇的要求),如果您使用方法 getSubjectDN() 或 cert.getSubjectX500Principal().getname() 显示主题详细信息,它将显示整个详细信息。有些可能被编码。我相信它是 ASN1。(不确定)。我需要的是只提取我需要的信息。有关示例,请参阅我创建的示例证书的代码输出。using method - cert.getSubjectX500Principal().getname() Subject Name 2.5.4.5=#130d4e2d61626c652f49542f303130,2.5.4.72=#1308456e67696e656572,2.5.4.41=#13104e7577616e20446520416c6d65696461,1.2.840.113549.1.9.1=#16106e7577616e406e2d61626c652e62697a,OU=Information Technology ,O=N-able Pvt Ltd\ ,ST=西方,C=LK

2.5.4.5 是经过编码的 OID(对象标识符)。

使用方法——getSubjectDN()

OID.2.5.4.5=N-able/IT/010, OID.2.5.4.72=工程师, OID.2.5.4.41=努万德阿尔梅达, OID.1.2.840.113549.1.9.1=#16106E7577616E406E2D61626C652E62697A, OU=信息技术, O="N-able Pvt Ltd",ST=西方,C=LK

这里还对一些信息进行了编码,例如:电子邮件地址。

所以回到我的问题,我们如何根据 OID 分别提取信息(未编码)。此外,如果您在 windows 操作系统中安装证书,您可以正确查看主题信息。我需要的是一个代码来获取通过 java 中的 OID 的 OID 值信息,以单独提取主题详细信息。

再次提前感谢您。

4

2 回答 2

1

查看 Bouncy Castle ASN.1 解析库,尤其是X500Name. 它可以将专有名称 (DN) 解析为其部分(CN、O 等)。

http://www.bouncycastle.org/docs/docs1.5on/index.html

于 2012-12-14T05:40:09.677 回答
0

以下代码(不包括错误处理)将从 .cer 文件中生成 X509Certificate 的实例。然后,您可以使用该对象的方法来检查证书的属性。该代码是通用 java,但应该在 Android 中工作。

X509Certificate cert = null;

FileInputStream fis = null;
ByteArrayInputStream bais = null;

String source = "certificate.cer";
String certType = "X.509"

fis = new FileInputStream(source);
byte[] value = new byte[fis.available()];
fis.read(value);

bais = new ByteArrayInputStream(value);

java.security.cert.CertificateFactory cf = java.security.cert.CertificateFactory.getInstance(certType);
cert = (X509Certificate)cf.generateCertificate(bais);
于 2012-12-07T06:26:57.337 回答