为了账号安全,请及时绑定邮箱和手机立即绑定

如何从Java的X509Certificate中提取CN?

如何从Java的X509Certificate中提取CN?

料青山看我应如是 2019-12-26 10:13:10
我正在使用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());

}


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 962 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信