我正在使用SslServerSocket和客戶端證書,并希望從客戶端的SubjectDN中提取CN X509Certificate。目前,我打電話,cert.getSubjectX500Principal().getName()但這當然給了我客戶端的總格式化DN。由于某種原因,我只是對CN=theclientDN 感興趣。有沒有一種方法可以提取DN的這一部分而無需自己解析String?
3 回答

米脂
TA貢獻1836條經驗 獲得超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());
}
添加回答
舉報
0/150
提交
取消