如果您查看两个证书中的颁发者DN,则它们不匹配(来自的输出
openssl x509 -text):
Issuer: C=AT, ST=Wien, L=Wien, O=Test CA, OU=Test CA, CN=Test CA/[email protected]
和
Issuer: [email protected], CN=Test CA, OU=Test CA, O=Test CA, L=Wien, ST=Wien, C=AT
结果,它无法将错误的颁发者与CA的主题DN相匹配。
不幸的是,
X500Name issuer = newX500Name(cacert.getSubjectX500Principal().getName())并没有达到您的期望。RDN的顺序相反。通常,由于存在多种将ASN.1表示序列化为字符串的方法,因此从字符串表示重建DN可能会失败。Java
X500Principal具有多种可用格式
getName(...),甚至提供了一种为字符串映射提供您自己的OID的方法(对于更加晦涩的OID)。该方法
emailAddress被分离也会造成问题(注意它是用逗号或用斜杠分隔的方式)。
而是从编码形式构建X500Name,这应该始终有效:
X500Name x500Name = X500Name.getInstance(cert .getSubjectX500Principal().getEnpred());
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)