Portál AbcLinuxu, 7. května 2025 17:09
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 3B BB 18 00 C0 10 31 FE 45 80 67 04 12 B0 03 03 00 00 81 05 3C Philips Smart MX Szczecin University of Technology in Poland student identity card (Elektroniczna Legitymacja Studencka = student identity card) CSOB bank, Czech Republic CATCert (Agència Catalana de Certificació) catalan government workers identity cardTakže se nejspíš jedná o nějakou verzi Starcos karty, protože tu jsem měl za blahé paměti v ČSOB. Dál jsem se však nedostal. Jsem čerstvým držitelem kvalifikovaného certifikátu na té kartě, ale jak se k těm certifikátům dostat... OpenSSL umožňuje používat čipové karty pomocí externího pkcs11 engine, ale openSC z Ubuntu tyhle Starcos karty nějak nedokáže používat.
libengine-pkcs11-openssl 0.1.8-2build1 OpenSSL engine for PKCS#11 modules libpkcs11-helper1 1.09-1 library that simplifies the interaction with PKCS#11 opensc 0.12.2-2ubuntu1 Smart card utilities with support for PKCS#15 compatible cardsTuší někdo co s tím dál?
Řešení dotazu:
Používám USB věc. Takže mohu říci, že engine-pkcs11 obsahuje mraky chyb, sám jsem na něj napsal řadu patchů a nejsem jediný a upstream nijak nereaguje. Takže než se vrhnete na OpenSSL, tak začněte o patro níže s OpenSC.
Čtečka je podporovaná, ale o kartě těžko říci. Začněte Supported hardware. V podstatě potřebujete dosáhnout toho, aby pkcs15-tool nebo pkcs11-tool (podle toho, který „formát“ je na kartě) ukazoval seznam certifikátů (a po zadání hesla) i soukromých klíčů.
Jsem čerstvým držitelem kvalifikovaného certifikátu na té kartě.
A jak jste na kartu dostal soukromý klíč? A kdy jste si na ní nastavil PIN? Jestli to byla tak, jak si myslím, tak za prvé to není vůbec bezpečné a za druhé jste tím porušil zákon o elektronickém podpisu.
Já jsem kdysi koupil USB šifrovací modul ASEkey od Atheny, který měl otevřený ovladač. Možná by vás oslovila i její současná nabídka.
OpenSSL přistupuje ke kryptografickým operacím skrze tak zvaný engine. Což je v podstatě sada funkcí s daným API. Samozřejmě OpenSSL má vlastní formát a nepoužívá PKCS#11, jak je v tomto světě obvyklé. Právě na to existuje engine_pkcs11, což je obálka která zvenku implemetuje OpenSSL engine a zevnitř volá PKCS#11.
Některé enginy jsou přímo součástí OpenSSL, ostatní se dají nahrát jako modul. Nakonfigurované enginy lze vypsat příkazem openssl engine -t
.
Konfigurace dalších enginů se dá udělat jednorázově (pokud to OpenSSL aplikace podporuje), ale pohodlnější je přidat ji do globálního konfiguráku. Například:
openssl_conf = openssl_def [ openssl_def ] engines = engine_section [engine_section] pkcs11 = pkcs11_section [pkcs11_section] engine_id = pkcs11 dynamic_path = /usr/lib/engines/engine_pkcs11.so MODULE_PATH = /usr/lib/opensc-pkcs11.so init = 0
přidá engine s názvem pkcs11, který je implementován knihovnou engine_pkcs11, která z parametru MODULE_PATH bere konkrétní PKCS#11 modul. Je to stejný modul, který se třeba cpe do konfigurace NSS ve Firefoxu. V tomto případě je to PKCS#11 obálka nad OpenSC.
Když vše funguje, tak výstup vypadá takto:
$ openssl engine -t (rsax) RSAX engine support [ available ] (dynamic) Dynamic engine loading support [ unavailable ] (pkcs11) pkcs11 engine [ available ]
Takhle to má OpenSSL. Je to docela humpolácké. A je třeba se připravit, že engine_pkcs11 obsahuje hodně chyb. Podívejte se na mailing list OpenSC, v srpnu jsem tam posílal 10 patchů, které ji dělají použitelnou.
Lépe to má vyřešené GnuTLS, které implementuje novější způsob, jak pracovat s PKCS#11 moduly, a to skrze zvláštní URL, které obsahuje přímo název modulu, čtečky, karty a objektů na kartě, takže nic není nutné zapisovat do magických konfiguračních souborů. Navíc ta zvláštní URL není nějaký proprietární výmysl jako zpola dokumentované enginy u OpenSSL, ale je to standard.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.