できればJavaセキュリティパッケージに同梱されているものだけを使いたい。
この回答から、私は試しました:
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 の一部ですか??)