在SSL中,如何检查信任存储中是否存在匹配的证书?是通过匹配指纹还是序列号?
我一直认为这是通过匹配指纹来实现的,但是当我运行java调试时,我得到的是下面的内容,我在那里看不到任何指纹。
*** Certificate chain
chain [0] = [
[
Version: V3
Subject: CN=XXXX
Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11
Key: Sun RSA public key, 1024 bits
modulus: XXXX
public exponent: XXXX
Validity: [From: Mon Mar 16 22:48:10 UTC 2015,
To: Sun Jun 14 22:48:10 UTC 2015]
Issuer: CN=XXXX
SerialNumber: [ XXXXXXX]
Certificate Extensions: 1
[1]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
...
]
]
]
Algorithm: [SHA256withRSA]
Signature:
...
]
***
我希望这不是一个重复的问题(我在张贴之前检查了建议的问题)。
发布于 2015-03-24 15:19:08
通常,在证书中进行验证时,Certificate Authority Key Identifier
被标记为非关键,而且它甚至不总是存在的。你不能把它作为指纹参考来使用。
验证是通过构建证书路径,将证书的颁发者DN (区分名称)链接到您信任的CA证书的主题DN来完成的。
这在Java PKI程序员指南的CertPathBuilder/CertPathValidator部分中进行了描述。(更广泛地说,这是在RFC 3820之后,因为还有其他属性需要检查。)
或者,您也可以直接在信任库中拥有一个确切的End实体证书(而不是CA证书)。在这种情况下,可以使用与证书完全匹配的方法。
发布于 2015-03-24 15:16:26
它不检查是否有匹配的证书。它检查是否存在一个证书,其主题是否等于该证书的颁发者,其公钥是否验证该证书的签名。
https://stackoverflow.com/questions/29236167
复制相似问题