Podepisování a šifrování zpráv v Lotus Notes – zkušenost

Nedávno jsem řešil požadavek v jednom oddělení, podepisovat a šifrovat komunikaci s jednou partnerskou firmou. Ta organizace má vlastní certifikační autoritu a vydává vlastní privátní klíče pro daného člověka.

První zádrhel nastal již na počátku. Oni sice vytváří PK pro daného člověka, ale distribuuje jej na proprietárním USB tokenu, odkud nejde exportovat. Při připojení tohoto tokenu do systému se PK uloží dočasně do systémového úložiště certifikátů Windows, odkud ho lze po dobu připojení tokenu využívat. Problém je, že Lotus Notes nepoužívají systémové úložiště certifikátů. Mají vlastní systém. Privátní i veřejné klíče se ukládají jednak do ID souboru uživatele, druhak na server, do Person dokumentu tohoto uživatele. Odtud se pak používají pro šifrování a podepisování.

Po dlouhém vyjednávání vydali PK proti podpisu na CD a já ho mohl připojit k certifikátům uživatele. A zde nastal druhý zádrhel.

Lotus Notes mají od verze 8.5.2 nové kryptografické jádro, které nepodporuje šifrovací klíče, dlouhé 2048 bytů, tedy SHA2. IBM to zatím neřeší, jejich odpověď je, že tuto funkci nikdy nepodporovala a fakt, že starší verze klientů to umožňovaly, nic neznamená. Naštěstí existuje docela jednoduchý workaround, a to přiložit ty klíče ve starším klientovi. Shodou okolností zde mám ještě nainstalovaného sedmičkového klienta, takže s tím nebyl problém.

Pro uložení veřejného a privátního klíče je potřeba vytvořit kontejner ve formátu PKCS12. Lze to udělat buď exportem z úložiště Windows, pomocí Windows Exploreru, anebo nějakou utilitkou, která umí tyto klíče zkombinovat. Já použil OpenSSL na linuxu.

Výsledný kontejner (.p12) je pak potřeba mnohokrát popsaným postupem přiložit k certifikátům uživatele. Dále je potřeba přidat do osobního adresáře certifikát CA dané organizace a pak už jen stačí při psaní zprávy zatrhnout položku Podepsat.

A zde nastal další zádrhel. Klíč se zpravidla vydává na konkrétní e-mail adresu daného uživatele. Takže pokud je vydán pro e-mail frantisek.vomacka@prvni-poskytujici.cz, nelze podepsanou zprávu odeslat jako frantisek.vomacka@pr-po.cz, i když je to alias původní domény, používaný stejnou firmou. Uživatelé Lotus Notes mají svou e-mail adresu uloženu na serveru ve svém Person dokumentu, avšak tuto hodnotu lze přebít osobním Location profilem, uloženým v osobním adresáři, na který je uživatel aktuálně přihlášen. Pro případ, že aktuální adresa odesílatele tedy koliduje s adresou, uvedenou v certifikátu, je potřeba vytvořit uživateli Location profil a tam zapsat přesný tvar adresy v certifikátu. Uživatel se pro odeslání zprávy přepne do tohoto profilu a bude odesílat zprávu s tam uvedenou adresou.

Když mi to už pěkně u dané uživatelky ty zprávy podepisovalo, nastal čas vyzkoušet šifrování. A zde nastal další, naštěstí už poslední zádrhel.

K šifrování zprávy pro nějakého konkrétního adresáta potřebujete veřejný klíč, vydaný stejnou organizací, která vydala ten váš. Šifrujete veřejným klíčem adresáta, on zprávu otevírá pomocí svého privátního klíče. Tím se zamezí tomu, že si zprávu přečte někdo jiný, kdo nevlastní daný privátní klíč.

Abyste mohli šifrovat veřejným klíčem někoho jiného, potřebujete logicky, aby vám ho nějak předal. k tomu postačí, když vám pošle podepsanou zprávu. Tuto zprávu si otevřete a v nástrojovém pruhu vyberete položku Více (More) a v menu pod ní pak položku Přidat odesílatele do kontaktů… (Add Sender to Contacts…). Vyskočí na vás dialogové okno, kde se přesvědčíte, že je zatržena volba Přiložit X.509 certifikát… Ostatní položky lze upravit a po stisknutí OK se vám tento kontakt objeví v osobním adresáři, kde si můžete na poslední záložce ověřit, že je přiložen i certifikát od správného vydavatele.

A teď, v čem je ten zádrhel. Pokud tomu člověku píšete, musíte ho explicitně vybrat ze svého adresáře – kliknout na položku Pro: (To:) –> Přepnout na osobní adresář –> Vyhledat, vybrat a potvrdit. Jen tak zajistíte, že klient Lotus Notes daný certifikát najde a použije. A to je potřeba udělat i v případě, že odpovídáte na zprávu od toho člověka. Pokud tam je třeba předvyplněný e-mail a ten e-mail i koresponduje s tím, který je uložený v kontaktu, ten kontakt nemusí být nalezen. Vyhodí vám to ošklivé dialogové okno s hláškou, že buď nebyl nalezen příslušný kontakt, anebo byl nalezen, ale neobsahoval potřebný certifikát.

Takže vybrat, nevyplňovat ručně. V případě odpovědi raději adresu vymazat a vybrat znovu.

To jsou moje zkušenosti z cca týdenního porodu, kdy jsem se snažil nastavit jedné uživatelce možnost podepisovat a šifrovat komunikaci s nějakou firmou. Jak vidíte, není to jednoduché a upřímně říkám, že PKI architektura a navíc v kombinaci s klientem Lotus Notes, je pro obyčejné uživatele naprosto nepochopitelný obser a nedivím se, že o to téměř nikdo nestojí.

4 Komentáře.

  1. Dobrou zprávou je že verze 8.5.4 by měla podporovat certifikáty SHA-2, tak doufejme že tomu tak bude.

  2. Otázka je, zda se k tomu kroku rozhodli dobrovolně, nebo zda je k tomu přinutil tlak zákazníků. :smile:

  3. Ten závěr je hodně kvalitní, to mi přijde spíš jako chyba ;)

  4. Každopádně, budiž to mementem pro všechny dodavatelské firmy, které se bijí v prsa, že “to testovali v hromadě mailových klientů a všude to fungovalo”.

    Na to se totiž dá odpovědět jen: “A testovali jste to i v Lotus Notes?”