Martin Kuba napsal(a):
Lucie Rut Bittnerova wrote:
Dobry den,
kopiruju sem relevantni kus kodu z clanku
http://interval.cz/clanky/e-java-xml-podpis-vytvoreni/

Tenhle článek mi zrovna přišel vhod, protože podepisování
XML budu muset v blízké době řešit.

Chtěl bych se zeptat, jak se dá do podpisu vložit celý
řetěz certifikátů, který vrací KeyStore.getCertificateChain(alias);
Cely retez vkladam tak, ze tam volanim x509dataList.add(cert); vlozim postupne vsechny certifikaty, ktere obsahuje, pocinaje certifikatem podpisovatele a konce certifikatem CA.

Jinak osobne pouzivam podpisy dle specifikace XAdES, ktere jeste obsahuji jako podepsany atribut hashe vsech vlozenych certifikatu, protoze KeyInfo je nepodepsany element.
Ten příklad vkládá pouze první certifikát (tedy uživatelův),
ale pokud je uživatelův certifikát podepsaný CA, která sama
je podepsaná CA, která je trusted root, tak je nutné mít
celý řetězec, jinak nejde ověřit, že certifikát je věrohodný.
Jasne, mela jsem to tam napsat, asi jsem prilis zjednodusila pro potreby clanku.

Příklad v článku http://interval.cz/clanky/e-java-xml-podpis-validace/
pak ověřuje, že souhlasí obsah dokumentu s podepsaným hashem,
ale už neověřuje, že certifikát je věrohodný. Takže útočník
může vyměnit kompletně celou zprávu a podepsat ji vlastním
self-signed certifikátem, a validací to projde.
To je planovano do dalsiho dilu o overovani platnosti certifikatu, certifikacni cesty a CRL,
ale jeste jsem se k nemu nedostala.

Lucie

Odpovedet emailem