我有两个证书。一个证书是另一个证书的颁发者。
我怎样才能看到 java 代码,我的颁发者证书真的是颁发者?
我知道我的证书的 AuthorityKeyIdentifier 和颁发者证书的 SubjectKeyIdentifie 必须相同。我查了一下,它们是一样的。
但是使用java代码我得到了这个结果:
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
InputStream usrCertificateIn = new FileInputStream("/usr.cer");
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(usrCertificateIn);
InputStream SiningCACertificateIn = new FileInputStream("/siningCA.cer");
X509Certificate issuer = (X509Certificate) certFactory.generateCertificate(SiningCACertificateIn);
byte[] octets = (ASN1OctetString.getInstance(cert.getExtensionValue("2.5.29.35")).getOctets());
System.out.println(Arrays.toString(octets) + " bouncycastle, AuthorityKeyIdentifier");
System.out.println(Arrays.toString(cert.getExtensionValue("2.5.29.35")) + "java.security, AuthorityKeyIdentifier");
octets = ASN1OctetString.getInstance(issuer.getExtensionValue("2.5.29.14")).getOctets();
System.out.println((Arrays.toString(octets) + "bouncycastle, SubjectKeyIdentifie "));
System.out.println(Arrays.toString(issuer.getExtensionValue("2.5.29.14")) + "java.security, SubjectKeyIdentifie ");
结果是:
[48、22、-128、20、52、-105、49、-70、-24、78、127、-113、-25、55、39、99、46、6、31、66、-55, -86, -79, 113 ] bouncycastle,AuthorityKeyIdentifier
[ 4 , 24, 48, 22, -128, 20, 52, -105, 49, -70, -24, 78, 127, -113, -25, 55, 39, 99, 46, 6, 31, 66 , -55, -86, -79, 113 ]java.security, AuthorityKeyIdentifier
和另一个必须相同的字节数组,但它不是另一个字节被添加到数组的开头。
[ 4、20、52、-105、49、-70、-24、78、127、-113、-25、55、39、99、46、6、31、66、-55、-86、-79 , 113 ]bouncycastle, SubjectKeyIdentifie
[ 4、22、4、20、52、-105、49、-70、-24、78、127、-113、-25、55、39、99、46、6、31、66、-55、- 86, -79, 113 ]java.security, SubjectKeyIdentifie
问题1)我可以计算关键标识符以获得相同的数组吗?
问题2)是否有另一种方法可以证明一个证书是另一个证书的颁发者。