当前位置: 首页 > 面试题库 >

从证书DN中解析出CN

柳德义
2023-03-14
问题内容

首先,我要说这是一个美学问题。我已经解决了自己的问题,只是对更好的解决方法感到好奇。

因此,我有一个证书DN,如下所示:

CN = Jimmy Blooptoop,OU =某个地方,OU =员工,DC = Bloopsoft-Inc

现在,我想从中获取CN。在Java中,没有本机支持就可以从X509证书中获取除完整DN之外的任何内容,而无需使用诸如充气城堡之类的第3方库-
我无法使用。因此,我必须将其解析出来,这不是什么大问题。唯一使它有些棘手的是,CN不一定总是被格式化为<first name> <lastname>。通常,实际上是<last name>, <first name> <middleinitial>。因此,在上面的示例中,CN可以是Jimmy Blooptoop或Blooptoop,Jimmy J(当然是Joop的缩写)。

在阅读了有关正则表达式的内容之后,我编写了以下内容,它们足够好用:

Matcher m = Pattern.compile("CN=[A-Za-z]*[, ]*[ A-Za-z]*").matcher(dn);
if (m.find())
  cn = m.group();

我只是好奇是否有一些看起来不像废话的表情。我很自信,自从我阅读了正则表达式的简介后就可以解决这个问题。


问题答案:

怎么javax.naming.ldap.LdapName

String dn = "CN=Jimmy Blooptoop,OU=Someplace,OU=Employees,DC=Bloopsoft-Inc";
LdapName ln = new LdapName(dn);

for(Rdn rdn : ln.getRdns()) {
    if(rdn.getType().equalsIgnoreCase("CN")) {
        System.err.println("CN is: " + rdn.getValue());
        break;
    }
}

它不是最漂亮的界面,因为缺少一些类似的东西,LdapName#getByType(String)但是它使您不必考虑DN可能具有的奇怪功能。



 类似资料:
  • 问题内容: 我试图分几个步骤处理X509证书,并遇到了两个问题。我是JCE的新手,所以我还没有完全了解最新信息。 我们希望能够基于不同的编码(PEM,DER和PCKS7)解析几个不同的X509证书。我已经使用FireFox 从https://belgium.be以PEM和PCKS7格式导出了相同的证书(证书包括链)。我已经省略了几行不需要的问题 只要我使用FileInputStream而不是PCK

  • 下一步是验证这些证书链。1)检查所有证书是否有有效日期(简单)2)使用OCSP验证证书链(如果在证书中没有发现OCSP URL,则返回CRL)。 我使用的是Sun JCE,但似乎没有那么多可用的文档(示例)? 我首先做了一个简单的实现,它只检查链,而不经过OCSP/CRL检查。 但是在OCSP.url属性中手动设置OCSP url之后,我得到了一个java.security.cert.certPa

  • 问题内容: 任何推荐的Java加密库。我需要的是解析X.509证书以提取其中包含的信息的能力。 谢谢 问题答案: 在Java中,为java.security.cert.CertificateFactory。 “用于X.509的证书工厂必须返回作为java.security.cert.X509Certificate实例的证书”

  • 我正在尝试更新AWS上EC2实例的通配符证书。这些服务器所属的服务由单个服务器和AWS ELB后面的一组服务器组成。 证书已在单个服务器上成功更新和验证。 对于从 ELB 用于自动缩放的映像中提取的实例也是如此。 然而,当我试图添加一个新的证书到负载平衡器时,我得到了上面的错误。我确定证书是正确的,并且是PEM格式的。我首先通过web控制台进行了尝试,然后使用aws aim命令行工具得到了相同的结

  • 问题内容: 我目前正在尝试从Go程序内部运行命令,并从响应中解析一个整数。该命令返回如下输出: 6 fyb_src / ex1.fyb(1)获胜! 使用和分割线并删除空白。但是,在尝试将数字解析为整数时,出现以下错误: 紧急:strconv.ParseInt:解析“ 0 \ r1 \ r2 \ r3 \ r4 \ r5 \ r6”:无效的语法 但是将我尝试解析的字符串打印到终端会产生以下结果: 6

  • 问题内容: 我正在尝试在Java中验证DN。到目前为止,我已经尝试使用Bouncy castle libry对其进行验证 该代码有效,但问题是该代码允许具有多个CN。 例如:对于CN = first,CN = second,ou = org,ou = org2,c = US,此代码返回true 但是我想要仅当存在cn,ou,o,c等时才返回true的验证。 任何帮助,将不胜感激。 问题答案: 如果