如何提取CN从X509Certificate在Java - 不使用Bouncy城堡? [英] how to extract CN from X509Certificate in Java - without using Bouncy Castle?
本文介绍了如何提取CN从X509Certificate在Java - 不使用Bouncy城堡?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望只使用与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 is:LAME_IssuingCA O = PIG C = US
这不正确(O和C是CN的一部分?
解决方案
反斜杠表示后两个名称/值对不是DN的单独元素。 p>
I want to preferably use only what is bundled with java security package.
From this answer, I tried:
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;
}
}
}
}
Output is
DN is: CN=LAME_IssuingCA O\=PIG C\=US
CN is: LAME_IssuingCA O=PIG C=US
Isn't this incorrect (O and C are part of CN??)
解决方案
The backslashes indicate that the second two name/value pairs aren't separate elements of the DN.
这篇关于如何提取CN从X509Certificate在Java - 不使用Bouncy城堡?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文