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 />

сертификат и съответен на него личен ключ, записани в PFX файл (PKCS#12<br />

хранилище), като паролата за достъп до този файл трябва да съвпада с<br />

паролата за достъп до личния ключ към сертификата. Такъв PFX файл може<br />

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

орган или да се генерира с инструмента keytool.<br />

За тестови цели могат да бъдат използвани демонстрационни цифрови<br />

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

сертификационни органи като Thawte, VeriSign и GlobalSign. Тези сертификационни<br />

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

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

За да бъдат използвани такива сертификати за подписване на документи с<br />

DigitalSignerApplet, те първо трябва да бъдат експортирани заедно с<br />

личния им ключ в .PFX или .P12 файл.<br />

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

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

документи със сертификат, намиращ се в PKCS#12 хранилище (PFX файл).<br />

Нека сега разгледаме имплементацията на аплета SmartCardSignerApplet<br />

за подписване на документи със смарт карта.<br />

Системни изисквания за Java аплета за подписване със смарт карта<br />

Java аплетът за подписване със смарт карта изисква инсталиран Java Plug-In<br />

версия 1.5 или по-нова на машината на клиента. Това е необходимо, защото<br />

аплетът използва Sun PKCS#11 Provider, който се появява стандартно в Java<br />

от версия 1.5 нататък.<br />

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

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

файл. Всъщност, разликата е само в начина на инстанциране на<br />

хранилището за ключове и сертификати. При работа с PKCS#12 хранилището<br />

се зарежда от PFX файл, а при работа със смарт карта, хранилището се<br />

зарежда от картата чрез интерфейса PKCS#11. Другата разлика е, че вместо<br />

парола за достъп се изисква PIN кода за картата. Всичко останало е еднакво<br />

– от зареждането на сертификата, до подписването на файла.<br />

Да разгледаме сорс кода на аплета. Класът SmartCardSignerApplet реализира<br />

основната му функционалност:<br />

import java.applet.Applet;<br />

import java.awt.*;<br />

import java.awt.event.ActionEvent;<br />

import java.awt.event.ActionListener;<br />

import javax.swing.*;<br />

SmartCardSignerApplet.java<br />

94

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

Saved successfully!

Ooh no, something went wrong!