24.12.2014 Views

Download - Svetlin Nakov

Download - Svetlin Nakov

Download - Svetlin Nakov

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

кационната му верига. Това може да бъде особено полезно в случаите,<br />

когато сертификационна верига липсва.<br />

Директната проверка използва съвкупност от доверени сертификати, която<br />

се прочита от специална директория, името на която се взима от константа в<br />

страницата. Тази директория трябва да е поддиректория на уеб приложението<br />

и трябва да съдържа само файлове със сертификати (.CER файлове).<br />

Ако се установи, че сертификатът на потребителя е директно подписан от<br />

някой от тези сертификати, той се счита за валиден. На потребителя се<br />

отпечатва резултатът от директната верификация.<br />

Следва проверка на получената сертификационна верига. Преди да започне<br />

самата проверка веригата се отпечатва на потребителя във вид на последователност<br />

от сертификати, всеки на отделен ред. За всеки сертификат<br />

се отпечатва поредният му номер във веригата и информация за собственика<br />

му.<br />

Проверката започва със зареждане на сертификатите, които ще бъдат<br />

използвани като крайни точки на доверие. Тези доверени Root-сертификати<br />

стоят във вид на .CER файлове в специална директория на уеб<br />

приложението, името на която се указва от константа.<br />

Проверката използва средствата на Java Certification Path API и установява<br />

дали подадената верига е валидна. Ако веригата се състои от само един<br />

сертификат (т. е. верига реално няма), тя се счита за невалидна. Ако<br />

веригата се състои от повече от един сертификат, от нея се премахва<br />

последният сертификат и се изпълнява PKIX алгоритъма.<br />

Резултатът от извършената верификация се отпечатва на потребителя. Ако<br />

се установи, че веригата е невалидна, на потребителя се отпечатва причината<br />

за това и поредният номер на сертификата, при проверката на който е<br />

възникнал проблемът.<br />

За четенето на всички файлове от дадена директория се използват методите<br />

getResourcePaths() и getResourceAsStream() на класа ServletContext.<br />

На всяка една стъпка от обработката на получения подписан файл, ако<br />

възникне проблемна ситуация, при която приложението не може да<br />

продължи работата си, на потребителя се отпечатва съобщение за грешка,<br />

придружено от пълния вид на полученото изключение.<br />

Възможни са различни проблеми ситуации като например липса на файл,<br />

липса на сертификационна верига, липса на сигнатура, невалидно кодиране<br />

на получената сертификационна верига или сигнатура, липса на някоя от<br />

директориите с доверени сертификати, невалиден формат на сертификат и<br />

други.<br />

Верификацията на цифрови подписи и сертификати в действие<br />

Резултатът от всички описани проверки, които се извършват при получаване<br />

на подписан файл, изглежда по следния начин (фигура 4-7):<br />

125

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!