Процес за проверка на X509 сертификат V3

От мен се изисква да създам програма, която валидира всеки даден сертификат X509 Version3, ако е надежден или не, чрез проверка на подписа. За да направя това, трябва да мога да знам публичния ключ на издателя, който е подписал този сертификат. Знам как да изведа информацията за издателя с помощта на метода getIssuerDN(), но това, което не знам е как да получа публичния ключ на издателя, когато знам само името му!

Единственото решение, което имам досега, е да поддържам списък с публични ключове за най-често срещаните сертифициращи органи в мрежата и просто да търся в него. Въпреки че това решение е изпълнимо, ми се струва непрактично.

Следователно, има ли друга идея да получите публичния ключ на издателя директно от сертификат и след това да завършите процеса на проверка?

Ето моя код за получаване на името на издателя, но НЕ и неговия публичен ключ.

    URL url = new URL("https link here!");
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.connect();

Certificate cert[] = con.getServerCertificates();
    X509Certificate x509cert = (X509Certificate) cert[0];
    String[] st= x509cert.getIssuerDN().toString().split(",");
    System.out.println("Issuer CN is: "+st[0].toString());

person Mike    schedule 16.02.2014    source източник
comment
Помислете за момент. Колко сигурно би било да извлечете публичния ключ директно от сертификата, който искате да проверите с точно този публичен ключ?   -  person Henry    schedule 16.02.2014


Отговори (1)


От мен се изисква да създам програма, която валидира всеки даден сертификат X509 Version3, ако е надежден или не, чрез проверка на подписа. За да направя това, трябва да мога да знам публичния ключ на издателя, който е подписал този сертификат.

Не. Или вие, или този, който ви е дал задачата, не разбира PKI. Идеята е, че вие ​​вече имате доверие на някои издатели по силата на това, че вече имате техните сертификати, напр. във файла cacerts, разпространяван с JRE, и следователно техните публични ключове. Ако сертификатът, който сте помолени да потвърдите, е проследим до един от тези издатели и преминава всички други проверки, можете да му се доверите. Простата проверка само чрез публичния ключ не е достатъчна.

person user207421    schedule 16.02.2014
comment
Добре, това вече има смисъл. Имате предвид, че мога да използвам файл с каретки, когато искам да проверя подписа на потребителски сертификат? - person Mike; 16.02.2014