1) X509Certificate の発行者を次のように取得しています。
String issuerDn(final X509Certificate cert) {
return cert.getIssuerX500Principal().getName();
}
cert.toString() は、発行者を次のように示します。
EMAILADDRESS=root@someperson, CN=someCommonName, OU=SomeOrganizationalUnit, O=SomeOrganization, L=SomeCity, ST=SomeState, C=--
ただし、cert.getIssuerX500Principal().getName() は次を返します。
1.2.<SOME DIGITS>=#<SOME DIGITS>,CN=someCommonName,OU=SomeOrganizationalUnit,O=SomeOrganization,L=SomeCity,ST=SomeState,C=--
ただし、cert.getIssuerX500Principal().getName("RFC1779") を使用すると、発行者が正しく返されます (つまり、 root@someperson で)。
RFC 2253 は RFC 1779 を廃止するため、X509Certifcate から発行者を取得するために cert.getIssuerX500Principal().getName("RFC1779") を使用することが正しいかどうかを説明してください。
2) 組織が "{SOME DIGITS}" のようなもの (つまり、中かっこといくつかの数字) の場合、getIssuerX500Principal().getName() は次のようなものを返すことに気付きました。
O=|0|{|0|7|0|E|0|F|0|2|0|B|0|1| ....
それでも getIssuerX500Principal().getName("RFC1779") は正しく返します。その理由と回避策を説明できる人はいますか?
3) 発行者名の間に null バイトが含まれている場合、 getIssuerX500Principal().getName() の予想される動作は何ですか?