24.12.2014 Views

Download - Svetlin Nakov

Download - Svetlin Nakov

Download - Svetlin Nakov

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

certFactory.generateCertificate(stream);<br />

// Use the X.509 certificate here ...<br />

} finally {<br />

stream.close();<br />

}<br />

Зареждане на сертификационна верига<br />

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

CertificateFactory.generateCertPath(). Той приема като параметър<br />

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

което отговаря на ASN.1 DER последователност от сертификати и PKCS7,<br />

което представлява PKCS#7 SignedData обект (обикновено такива обекти се<br />

записват във файлове със стандартно разширение .P7B). При използване на<br />

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

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

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

X.509 сертификати, от бинарен файл с формат ASN.1 DER:<br />

CertificateFactory certFactory = CertificateFactory.getInstance("X.509");<br />

FileInputStream stream = new FileInputStream("chain-asn.1-der.bin");<br />

try {<br />

CertPath certChain = certFactory.generateCertPath(stream, "PkiPath");<br />

// Use the certification chain here ...<br />

} finally {<br />

stream.close();<br />

}<br />

Изключенията в JCA<br />

При извършване на операции, свързани с криптография, класовете от JCA<br />

хвърлят изключения от тип java.security.GeneralSecurityException и<br />

java.security.cert.CertificateException (при работа със сертификати) за<br />

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

2.1.2. Директна верификация на сертификати с Java<br />

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

различни модели на доверие и по тази причина съществуват и<br />

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

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

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

Директната верификация на сертификат в Java се извършва тривиално:<br />

- проверява се срокът на валидност на сертификата;<br />

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

на който имаме доверие.<br />

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

предварително налично множество от доверени сертификати:<br />

54

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

Saved successfully!

Ooh no, something went wrong!