gpt4 book ai didi

java - X500Principal Distinguished Name 命令

转载 作者:搜寻专家 更新时间:2023-10-31 20:04:49 26 4
gpt4 key购买 nike

我使用 BouncycaSTLe 库通过 X509v3CertificateBuilder 类从 PKCS10 请求生成证书。

它返回构建一个 X509CertificateHolder 对象,其中包含生成的证书。如果我在持有人上调用 getIssuer,它会以正确的顺序返回发行人专有名称(如果我在发行人证书上调用 getSubjectX500Principal() 则返回相同的名称),如果我使用 java CertificateFactory 解析来自持有人的编码版本,则 getIssuerX500Principal生成证书的 () 方法以相反的顺序返回 DN,这是怎么回事?

这是我正在尝试做的示例代码:

X509CertificateHolder holder = certBuilder.build(sigGen);
holder.getIssuer(); //Returns the DN in the correct order (same as in issuer cert)

CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(new ByteArrayInputStream(holder.getEncoded()));

cert.getIssuerX500Principal().getName(); //Returns issuer DN in reverse order

最佳答案

由于我需要比较专有名称,我通过使用 LdapName 类解析 DN 并比较解析的 rdns 来解决:

boolean DNmatches(X500Principal p1, X500Principal p2) {
List<Rdn> rdn1 = new LdapName(p1.getName()).getRdns();
List<Rdn> rdn2 = new LdapName(p2.getName()).getRdns();

if(rdn1.size() != rdn2.size())
return false;

return rdn1.containsAll(rdn2);
}

关于java - X500Principal Distinguished Name 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10871922/

26 4 0