gpt4 book ai didi

java - 从证书中检索主题/CN 字段?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:41 27 4
gpt4 key购买 nike

我想从证书主题字段中检索一个字符串,但只是它的 CN 值。

获取我使用的整个字符串:

Enumeration enumeration = ks.aliases();
while (enumeration.hasMoreElements()) {
String aliass = (String) enumeration.nextElement();
X509Certificate cer = (X509Certificate) ks.getCertificate(aliass);
String s = cer.getSubjectDN().getName().;
System.out.println(s);
}

输出是:CN=something, OU=something, DC=something, DC=something, DC=someting

如前所述,我只想检索 CN 字符串。是否有一个简短的方法,或者我应该使用子字符串方法来获取该字段,这也不是我的首选方法,因为一些 certs.getName() 以他们的电子邮件地址开头。

最佳答案

我认为没有明确的方法可以使用 java API 从证书中获取 common name(您可以获取整个 subjectDN 并对其进行解析以获取 CN), 如果你想要一个这样做的方法使用 BouncyCastle类代替:

import org.bouncycastle.asn1.x500.X500Name;
import org.bouncycastle.asn1.x500.style.BCStyle;
import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
import org.bouncycastle.asn1.x500.RDN;
import org.bouncycastle.asn1.x500.style.IETFUtils;

Enumeration enumeration = ks.aliases();
while (enumeration.hasMoreElements()) {
String aliass = (String) enumeration.nextElement();
X509Certificate cer = (X509Certificate) ks.getCertificate(aliass);
X500Name x500name = new JcaX509CertificateHolder(cert).getSubject();
RDN cn = x500name.getRDNs(BCStyle.CN)[0];
String s = IETFUtils.valueToString(cn.getFirst().getValue());
System.out.println(s);
}

希望对您有所帮助,

关于java - 从证书中检索主题/CN 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26213152/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com