česky | english
Gemplus Twin + Gemsafe PKI Card + Ubuntu/Debian
Co budete potřebovat
Instalujte komponenty příkazem "apt-get install":
apt-get install pcscd opensc openssl libopensc-openssl libopensc1 libpcsc-perl libpcsclite1 pcsc-tools
Ačkoli OpenCT vypadá, že funguje, v podstatě jsem držel tlačítka, dokud se nerozběhl a nyní nemám OpenCT instalováno; plánujete-li mít v chodu OpenCT a PCSC démona současně, budou spolu soupeřit a skončí vzájemným zablokováním, takže si před instalací a použitím obou zároveň dobře rozmyslete, co děláte!
Inicializace Vaší karty
Nejspíš bude nutné zformátovat Vaši kartu, neboť mezi firmami vyrábějícími čtečky je mnoho nekonzistencí, karty a drivery pro různé operační systémy a jak jsem se dočetl, čistý stůl je možná ta nejlepší cesta, kterou se dát. Následující příkaz zformátuje a inicializuje kartu.
pkcs15-init -EC -p pkcs15+onepin -T
Přitom budete muset zadat hlavní PIN, alespoň čtyři číslice - doporučuji delší.
Potom budete potřebovat vygenerovat privátní klíč; to je velký kámen úrazu, který není moc dobře popsán ve většině dokumentů na síti, a ani OpenSSL, ani Firefox atd. nepřimějí úspěšně kartu vygenerovat privátní klíč!
pkcs15-init -G rsa/1024 --id 45 --auth-id 01 --key-usage digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement,keyCertSign
Uvedený příkaz vygeneruje 1024-bitový privátní RSA klíč; některé karty podporují i delší klíče.
Kontrola postupu
Teď byste měli mít nastaven PIN své karty a také privátní klíč, což můžete zkontrolovat následujícími příkazy.
pkcs15-tool --list-pins pkcs15-tool --list-keys
Měli byste vidět výpisy podobné těmto:
PIN [User PIN] Com. Flags: 0x3 Auth ID : 01 Flags : [0x32], local, initialized, needs-padding Length : min_len:4, max_len:8, stored_len:8 Pad char : 0x00 Reference : 10 Type : -1 Path : 3F005015 Tries left: -1
a
Private RSA Key [Private Key] Com. Flags : 3 Usage : [0x32E], decrypt, sign, signRecover, unwrap, derive, nonRepudiation Access Flags: [0x1D], sensitive, alwaysSensitive, neverExtract, local ModLength : 1024 Key ref : 0 Native : yes Path : 3F0050153055 Auth ID : 01 ID : 45
Legenda:
- User PIN = PIN uživatele
- Flags = příznaky
- Auth ID = identifikátor oprávnění
- Length = délka
- Pad char = výplňový znak
- Reference = odkaz
- Type = typ
- Path = cesta
- Tries left = zbylých pokusů
- Usage = použití
- Access Flags = příznaky přístupu
ModLength = délka modulo
- Key ref = odkaz na klíč
- Native = přirozený (nativní, vlastní)
- ID = identifikátor (identifikace)
Generování žádosti o podpis certifikátu (CSR)
Než budete se svou čtečkou cokoli dělat, potřebujete si vygenerovat CSR podat ji webu ke zpracování; našel jsem jen jedinou funkční metodu, a to openssl použitý interaktivně.
Musíte použít OpenSSL z jeho konzole/příkazového řádku, spusťte ho tedy bez argumentů:
openssl
Pak potřebujete zavést "stroj" OpenSC do OpenSSL, abyste přiměli kartu komunikovat s OpenSSL a vygenerovat CSR:
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/opensc/engine_opensc.so -pre ID:opensc -pre LIST_ADD:1 -pre LOAD OpenSSL> req -engine opensc -new -key 45 -keyform engine -out email.csr
Příkaz pro výpis klíčů ukázal identifikační číslo, které použijete ve výše uvedeném příkazu.
Vyžadujete-li klientský certifikát od CAcert, je jedno, jaké podrobnosti zadáte v předmětu; web je automaticky přepíše, uveďte tedy cokoli chcete.
Když nyní ukončíte OpenSSL a dáte příkaz "cat email.csr", měli byste vidět něco takového:
-----BEGIN CERTIFICATE REQUEST----- MIIBdDCB3gIBADA1MRQwEgYDVQQDEwtEdWFuZSBHcm90aDEdMBsGA1UdERQUbWFp ... lX+B+16nkamQqi08g3Rrak/GdmUNI6y98LXseFJzdbV+k5XQ4RxxkQ== -----END CERTIFICATE REQUEST-----
Přihlaste se nyní ke svému účtu na webu CAcert v menu zvolte Klientské certifikáty - Nový, zvolte údaje e-mailová adresa, přihlašování certifikátem resp. Vaše jméno, zobrazte rozšířené volby a pak vložte CSR do textového pole s názvem "Volitelná klientská žádost o podpis..." naspodu stránky.
CA podepíše Vaši žádost a vznikne certifikát. Pak se zobrazí stránka se žádostí instalovat certifikát v MS IE a pod ní obsah certifikátu kódovaný BASE64. Zkopírujte ho, vložte do souboru (zde "email.crt") a ten si uložte na HDD pro následný import na Vaši kartu příkazem:
pkcs15-init -X email.crt
Některé poznámky
Mám teď čtyři karty PKI a z toho jen jedna funguje, neboť potřebujete drivery pro každý typ karty a (jako obvykle) výrobci karet nedělají vždy tyto drivery pro Linux, ani nedávají své specifikace ostatním, aby mohli vytvořit drivery. Proto si dobře promyslete, které karty si zakoupíte!
Asi budete chtít vidět na stránkách CategoryCryptoHardware, jaký další PKI hardware Vám může být užitečný.