У меня была такая же проблема раньше. Видите ли, сертификат имеет поле эмитента, в котором указана тема эмитента.
Вы можете сравнить это, и / или вы можете проверить подпись. Только ЦС может проверить подпись сертификата.
Примерно так:
//load all the ca certificates and get their public keys
caCertificate.getIssuerDN().equals(caCertificate[i].getSubjectDN());
// OR/AND
try {
verifySignature(certificate,
caCertificate[i].getPublicKey());
//issuer found
}
catch (Exception e) {
// not the issuer
}
Я не тестировал код, но вы поняли.
EDIT:
В Java есть несколько классов, специально созданных для проверки цепочки. один из них - класс CertPathBuilder
. Я все еще изучаю, как его использовать. Я всегда создаю это с неправильными параметрами, я полагаю ...
РЕДАКТИРОВАТЬ 2:
Я использую то, что было вдохновлено этим .
удачи