【问题标题】:how to extract CN from X509Certificate in Java - without using Bouncy Castle?如何在 Java 中从 X509Certificate 中提取 CN - 不使用 Bouncy Castle?
【发布时间】:2013-09-07 02:20:14
【问题描述】:

我想最好只使用与 java 安全包捆绑在一起的东西。

从这个answer,我试过了:

static void parseCert(String filename) throws FileNotFoundException, CertificateException, IOException, InvalidNameException {
    FileInputStream fis = new FileInputStream(filename);
    BufferedInputStream bis = new BufferedInputStream(fis);

    CertificateFactory cf = CertificateFactory.getInstance("X.509");

    while (bis.available() > 0) {
        X509Certificate cert = (X509Certificate) cf.generateCertificate(bis);
        String dn = cert.getIssuerX500Principal().getName();
        System.out.println("DN is: " + dn);
        LdapName ln = new LdapName(dn);

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

输出是

DN 为:CN=LAME_IssuingCA O\=PIG C\=US

CN 是:LAME_IssuingCA O=PIG C=US

这不是不正确吗(O 和 C 是 CN 的一部分??)

【问题讨论】:

标签: java certificate x509certificate


【解决方案1】:

反斜杠表示后两个名称/值对不是 DN 的单独元素。

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 2013-12-15
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 2013-02-06
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多