我试图用Java做这个,但我认为这是一般证书问题。 我有根CA,由根CA颁发的中间CA1,由中间CA1颁发的中间CA2,以及由中间CA2颁发的证书。
rootCA - > interCA1 - > interCA2 - >证书
是否可以在不知道interCA2的情况下使用interCA1验证证书?
cert.verify(interCA2.getPublicKey()); // ok
interCA2.verify(interCA1.getPublicKey()); // ok
cert.verify(interCA1.getPublicKey()); // NOT ok -> is there any way to fix or bypass this?
答案 0 :(得分:1)
您不能这样做,因为interCA1不是证书的颁发者。
cert.verify(interCA1.getPublicKey());
证书使用颁发证书的私钥进行签名,因此您需要使用其公钥来验证签名。因此,要验证证书,需要完整的认证链。