java - может ли сертификат быть проверен с помощью корневого CA или CA-дедушки без родительского CA
Я пытаюсь сделать это на Java, но я думаю, что это общий вопрос сертификата. У меня есть корневой CA, промежуточный CA1, выданный корневым CA, промежуточный CA2, выданный промежуточным CA1, и сертификат, выданный промежуточным CA2.
rootCA -> interCA1 -> interCA2 -> сертификат
Можно ли проверить сертификат с помощью interCA1, не зная interCA2?
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?
1 ответ
Решение
Вы не можете сделать это, потому что interCA1 не является эмитентом сертификата.
cert.verify(interCA1.getPublicKey());
Сертификат подписывается с помощью закрытого ключа сертификата-эмитента, поэтому вам необходим его открытый ключ для проверки подписи. Поэтому для проверки сертификата необходима полная цепочка сертификации.