Autor Téma: Podpisový certifikát na USB tokenu  (Přečteno 274 krát)

Offline verex

  • Nováček
  • *
  • Příspěvků: 16
  • Karma: 0
    • Verze Delphi: 2010
Podpisový certifikát na USB tokenu
« kdy: 03-12-2019, 17:14:42 »
Je tu někdo znalý problematiky a možnosti podepisování certifikátem uloženým na USB tokenu?

Delphi 2010.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1451
  • Karma: 35
    • Pepak.net
Re:Podpisový certifikát na USB tokenu
« Odpověď #1 kdy: 03-12-2019, 19:22:54 »
Ano.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2402
  • Karma: 103
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Podpisový certifikát na USB tokenu
« Odpověď #2 kdy: 04-12-2019, 09:26:22 »
Ano.

Ja bych to s dovolenim prelozil: odpoved je presna na polozenou otazku. Misto toho by bylo vhodne se priste zeptat na konkretni situaci, usetri to cas vsem.
Embarcadero MVP - Czech republic

Offline verex

  • Nováček
  • *
  • Příspěvků: 16
  • Karma: 0
    • Verze Delphi: 2010
Re:Podpisový certifikát na USB tokenu
« Odpověď #3 kdy: 04-12-2019, 09:32:52 »
Ano, nevhodně jsem se zeptal.
Konkrétní situace je taková, že v oblasti mezd vstupuje v platnost novinka eNeschopenky a potreba komunikovat se webovou sluzbou CSSZ. Komunikaci je potreba sifrovat a zpravy podepisovat a zde nastupuje certifikat, ktery je mozno mit ulozeny na usb tokenu.
K pospisu a sifrovani certifikatem v pfx pouzivame openssl.

A ted jak na to s certifikatem na USB tokenu?

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1451
  • Karma: 35
    • Pepak.net
Re:Podpisový certifikát na USB tokenu
« Odpověď #4 kdy: 04-12-2019, 10:08:32 »
Pokud chceš použít token, potřebuješ pro něj podporu v podepisovací aplikaci. V případě OpenSSL to znamená:

a) Token umí standard PKCS#11. Pak můžeš použít engine pkcs11 pro komunikaci s tokenem. Na netu jsou k tomu příklady (hledej "openssl engine pkcs11"), ale nikdy jsem to nezkoušel.

b) Token je podporovaný Windowsím CryptoAPI nebo Crypto New Generation (to fakticky znamená, že když ho zasuneš do počítače, tak se ti objeví v úložišti certifikátů ten certifikát, který je na tokenu uložen). Pak můžeš použít engine capi. Je to docela peklo to poprvé rozchodit, ale když už se to jednou podaří, tak to funguje docela OK. Stáhni si https://www.pepak.net/files/far/virustotal-0.01-source.zip, tam v souboru Source\Lib\Synapse\source\lib\ssl_openssl_capi.pas uvidíš příklad, jak na to (je určený pro práci se SSL protokolem a mám reálně otestovanou pouze klientskou část, ne serverovou, ale práce s enginem by měla být stejná i pro podepisování). Pozor, podle mých pokusů má OpenSSL verze 1.1.0 a vyšší v CAPI chybu, nepodařilo se mi to nikdy zprovoznit. Ale třeba budeš mít větší štěstí. Ve verzi 1.0.2 to funguje v pořádku.

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 175
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Podpisový certifikát na USB tokenu
« Odpověď #5 kdy: 04-12-2019, 10:46:04 »
Na okraj - ako sa toto riesi na Slovensku - neviem, ci to este plati, ale pre podpisovanie ZEP-om (zaruceny elektronicky podpis, certifikat na externom zariadeni ako USB token, karta/obciansky preukaz) bolo nutne pouzivat iba aplikaciu, ktora presla certifikaciou NBU (narodny bezpecnostny urad). Teda nebolo lahke ju bezne nakodovat vo vlastnej rezii pre komercne firmy. Preto statna sprava dodava niekolko softverovych sucasti pre komunikaciu s ich systemami. konkretne napriklad v colnej oblasti (dovoz, vyvoz mimo EU) je k dispozicii aplikacia (kniznica + spustitelna cast), ktoru mozes z vlastneho programu zavolat, ta potom zabezpeci podpisanie udajov, cez tzv. DSigner a nasledne odoslanie do systemov financnej spravy (colnici+daniari,atd). kniznica potom vrati vysledok podpisania/odoslania (uspesne/neuspesne + pripadna chyba).
teda mozno skus popatrat, ci aj u vas statna sprava nedava k dispozicii (u nas zadaramo) take softverove baliky, cez ktore sa softverovej firme takto uhlahcuje vyvoj programu na komunikaciu so statnou spravou - ako som uz pisal, nemusi vyvojar riesit certifikaciu (schvalovanie cez NBU) podpisovaca a dalsich sucasti.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1451
  • Karma: 35
    • Pepak.net
Re:Podpisový certifikát na USB tokenu
« Odpověď #6 kdy: 04-12-2019, 11:25:24 »
ci aj u vas statna sprava nedava k dispozicii (u nas zadaramo) take softverove baliky, cez ktore sa softverovej firme takto uhlahcuje vyvoj programu na komunikaciu so statnou spravou
Probuď se, my jsme v České republice. Tady státní správa (nebo přinejmenším ty části, se kterými se potkávám já - třeba to ČSSZ dělá jinak, nechci jim křivdit) funguje na principu "Je to vaše povinnost, my vám pomůžeme akorát tím, že budeme dávat pozor a až ji nesplníte, tak vám rovnou napaříme pokutu".

Pravda, zase nemusíme řešit schvalování a certifikaci, u nás si tu aplikaci může každý naprogramovat tak špatně, jak jen se mu zachce.

Offline Marek Weyda

  • Plnoletý
  • ***
  • Příspěvků: 225
  • Karma: 8
    • Verze Delphi: Delphi 2007, 10.1 Berlin
Re:Podpisový certifikát na USB tokenu
« Odpověď #7 kdy: 05-12-2019, 08:24:04 »
Tak pokud řešíš eNeschopenku, tak tu mám aktuálně vyřešenou a s certifikáty na čemkoliv nebyl problém, u nás většina zákazníků bude mít normálně čipovou kartu, při podepisování většinou zadají PIN, objeví se jim virtuální klávesnice. Jen si dej pozor, že na rozdíl od EET tady budou v některých případech potřeba certifikáty tři - ten veřejný od ČSSZ pro zašifrování směrem k nim, pro podepisování a pro dešifrování směrem od nich. Funguje to totiž tak, že směrem na ČSSZ VREP to zašifruješ jejich veřejným certifikátem, který je ke stažení na jejich stránkách. Zároveň ve svém requestu v DZDPN v elementu SifrovaciCertifikat zašleš veřejnou část svého šifrovacího certifikátu. V ČSSZ Message zase připojíš podpis pomocí podpisového certifikátu - prostě klasika element Signature. U nás jsme řešili právě to, že někteří klienti mají podpisový certifikát jenom pro podepisování, je zablokovaný pro šifrování dokumentů. K tomu používají jiný certifikát. Je to přímo i popsáno v dokumentaci od ČSSZ - která je mimochodem překvapivě velice dobrá - že dle nějakých pravidel není úplně korektní certifikát k podepisování používat i k šifrování. Já při testování jsem si to udělal tak, že jsem měl podpisový certifikát a jako šifrovací jsem použil ten testovací z EET a s testovacím rozhraním ČSSZ VREP to šlape jako hodinky, teď už řeším zpracování jejich XML (DZDPNOdpoved). Takže naprosto v pohodě dle té dokumentace jsem to dostal do stavu, že po dešifrování mám jejich platné XML s nemocnostmi. Pročti si pořádně ten jejich dokument pro vývojáře, je to tam perfektně vše popsané, až se divím, že státní správa toto vyplodila - tady jednoznačná pochvala pro IT tým ČSSZ.

Zklamu Tě ale v jedné věci. Z různých důvodů již jsem toto řešení nenaprogramoval v Delphi - tedy tu část komunikace s ČSSZ VREP. EET ale ano a myslím si, že i ten VREP by měl v Delphi jít v pohodě.

Offline verex

  • Nováček
  • *
  • Příspěvků: 16
  • Karma: 0
    • Verze Delphi: 2010
Re:Podpisový certifikát na USB tokenu
« Odpověď #8 kdy: 06-12-2019, 15:06:48 »
Děkuji vše za reakce.

Dokumentace ČSSZ je opravdu až nezvykle dobrá, dalo by se říci, konečně tomu tak je. I reakce supportu jsou během pár minut a spolupráce je výborná. Takže zmáknuté to máme, ale s využitím certifikátu v souboru a openssl.exe. Padl ale dotaz na možnost použití čipových karet, kde nemáme zkušenosti, tak jsem vznesl dotaz a jdeme bádat. Delphi nás ale neminou. Zatím díky všem.