Download - Svetlin Nakov
Download - Svetlin Nakov
Download - Svetlin Nakov
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