2. března 2008

Java applety a SSL

Jak jsem již dříve referoval, na jednom našem projektu používáme komponentu ImageUploader pro nahrávání dokumentů do systému. Komponenta se automaticky dle verze prohlížeče spouští jako ActiveX (pro IE) a nebo Java applet. Komunikace mezi komponentou a serverem je zabezpečena pomocí protokolu HTTPS.

Dále je důležité říci, že zákazník má vlastní certifikační autoritu, která není odvozena od žádné věhlasné věrohodné certifikační autority.

Pokud uživatel nechce, aby se mu pořád objevovala chyba, že cílová stránka má neplatný certifikát, tak je nutné importovat kořenový certifikát do lokálního úložiště důvěryhodných certifikátů na počítači daného uživatele. Tento postup je asi následující:

  1. Stáhnu si kořenový certifikát zákazníka vystavený na webu
  2. Kliknu na něj a průvodce mě provede instalací certifikátu

Postup velice jednoduchý a pro uživatele nijak komplikovaný.

Jenže je tu velké ALE - takto jednoduché je to pouze pro prohlížeč Internet Explorer. Pro Firefox je to složitější, protože má vlastní úložiště důvěryhodných certifikátů, takže je potřeba import kořenového certifikátu udělat ještě jednou zvlášť pro Firefox.

Pokud chceme používat Java Applety se zabezpečenou komunikací, tak musíme jít ještě dále, protože Java má také svoje úložiště důvěryhodných certifikátů a proto musíme kořenový certifikát vložit i sem. K tomu má Java nástroj keytool, který je sice celkem mocný, ale bez šance, že by s ním dělal normální uživatel internetu.

Co s tím? Řešením by bylo, kdyby kořenový certifikát zákazníka byl odvozen od nějaké světově věrohodné společnosti jako třeba VeriSign, Thawte. Tyto věrohodné firmy jsou již automaticky v úložištích důvěryhodných certifikačních autorit, takže by úplně odpadl import certifikátů. Jenže za to se platí a na to zákazník nemá peníze.
Dalším řešením by bylo, kdyby bylo jedno úložiště důvěryhodných certifikátů. To nevím, jak je moc reálné, takže to nemohu posoudit. Co mě ale nejvíce překvapuje, že Java resp. Java applet není schopen sdílet informace o certifikátech s prohlížečem, ve kterém běží?

Přijde mi tento postup natolik uživatelsky nepřívětivý (navíc ještě ve srovnání s technologií ActiveX), že se spíše ptám sám sebe, kde jsem udělal chybu já. Z mého pohledu je to další důvod pro mé tvrzení, že Java applety se moc nepovedly a už se nemůžu dočkat až bude něco lepšího, snad JavaFX.

Pokud mi můžete v tomto směru poradit, tak budu moc rád.

2 komentáře:

Anonymní řekl(a)...

Je to skutecne otrava s tymi certifikatmi.
Ja pouzivam Thawte freemail certificate. Jeho root je importovany v Jave takze sa da pouzit a je platny. Na druhej strane meno certifikatu nie je zrovna pekne a nema nic spolocne s vami. Ale je zadarmo :-) .
Thawte ma tiez vytvoreny web of trust siet notarov a tam sa potom overit vasa identita a tu mozete vlozit do certifikatu.
Viacej na http://www.dallaway.com/acad/webstart/ .

Anonymní řekl(a)...

No, JRE 1.6 určitě umí pracovat s MS úložištěm certifikátů a to i pro ověřování SSl certifikátů. Jiné to bude s jinými prohlížeči a v jiných systémech. Musel by existovat standard pro zveřejnění úložiště do pluginu - nebo opačně z JRE do prohlížeče.