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)。
任何人都可以解释使用cert.getIssuerX500Principal()。getName(“RFC1779”)从X509Certifcate检索发行者是否正确,因为RFC 2253废弃了RFC 1779.
2)我注意到如果组织类似于“{SOME DIGITS}”(即开括号和一些数字),则getIssuerX500Principal()。getName()返回如下内容。
O=|0|{|0|7|0|E|0|F|0|2|0|B|0|1| ....
仍然是getIssuerX500Principal()。getName(“RFC1779”)正确返回它。任何人都可以解释为什么会这样,并解决了什么问题?
3)如果发行者名称中包含空字节,则getIssuerX500Principal()。getName()的预期行为是什么?