猿问

如何从Java的X509Certificate中提取CN?

我正在使用SslServerSocket和客户端证书,并希望从客户端的SubjectDN中提取CN X509Certificate

目前,我打电话,cert.getSubjectX500Principal().getName()但这当然给了我客户端的总格式化DN。由于某种原因,我只是对CN=theclientDN 感兴趣。有没有一种方法可以提取DN的这一部分而无需自己解析String?


料青山看我应如是
浏览 963回答 3
3回答

米脂

这是另一种方式。想法是您获得的DN为rfc2253格式,与LDAP DN所使用的格式相同。那么为什么不重用LDAP API呢?import javax.naming.ldap.LdapName;import javax.naming.ldap.Rdn;String dn = x509cert.getSubjectX500Principal().getName();LdapName ldapDN = new LdapName(dn);for(Rdn rdn: ldapDN.getRdns()) {    System.out.println(rdn.getType() + " -> " + rdn.getValue());}
随时随地看视频慕课网APP

相关分类

Java
我要回答