1

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() 的预期行为是什么?

4

0 回答 0