栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

读取Tomcat中的传入证书

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

读取Tomcat中的传入证书

您可以通过获取上的

javax.servlet.request.X509Certificate
属性来获取客户端证书链
HttpServletRequest
。这是阵列
X509Certificate
小号其中第一个(位置0)是实际的客户端证书(该链的其余部分如果需要中间CA证书可以存在)。

X509Certificate certs[] =     (X509Certificate[])req.getAttribute("javax.servlet.request.X509Certificate");// ... Test if non-null, non-empty.X509Certificate clientCert = certs[0];// Get the Subject DN's X500PrincipalX500Principal subjectDN = clientCert.getSubjectX500Principal();

然后,您可以按照此答案中的描述在此主体(例如CN)中获得各种RDN(相对专有名称):

import javax.naming.ldap.LdapName;import javax.naming.ldap.Rdn;String dn = subjectDN.getName();LdapName ldapDN = new LdapName(dn);for(Rdn rdn: ldapDN.getRdns()) {    System.out.println(rdn.getType() + " -> " + rdn.getValue());}

(您也可以使用BouncyCastle

X509Name
来获取每个RDN。)

在X.509证书中,主题DN是RDN的有序序列,每个RDN都是一组AVA(属性值断言),例如

CN=...
O=...
。原则上,每个RDN可以有多个AVA,这会在这里引起问题,但这很少见。您几乎可以假设每个RDN只有一个AVA。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/391850.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号