Asmens tapatybės kortelės sertifikato HOWTO

J
  • 10 Grd '14

Kadangi panašios temos LT forumuose neradau, aprašysiu, kaip pavyko pasileisti asmens tapatybės kortelės (2013 metų) autorizaciją ant Ubuntu 14.04 ir 14.10 versijų.

Įžanga
Lietuvoje išduotą asmens tapatybės kortelę galima naudoti pasirašymui ar autorizacijai tiek į valstybines, tiek į kai kurias privačias įstaigas. Tam reikia specialaus skaitytuvo ir šiokios tokios konfigūracijos Linux'e.

Tech įranga:
Smart kortelių skaitytuvas HID OMNIKEY® 3021
http://www.skytech.lt/r302102151-hid-om ... 17261.html

Omnikey 3021 skaitytuvo tvarkyklės:
http://www.hidglobal.com/drivers?field_brand_tid=24
Pas mane v4.0.5.4, bet turėtų veikti ir su naujesnėmis versijomis. Tvarkykles diegti po libpcsclite1 įdiegimo "Programinės įrangos" 2-am žingsnyje.

Programinė įranga:
Iš esmės viskas teisingai aprašyta VRM puslapio metodinėje informacijoje http://www.nsc.vrm.lt/guides.htm "Kompiuterio paruošimas pasirašymui elektroniniu parašu (Linux OS)" nuorodoje. Mano pastabos:

  1. Kortelės programinę įrangą reikėtų imti iš:
    http://www.nsc.vrm.lt/downloads.htm, tačiau "CryptoTech kortelės programinė įranga" nuorodoje padėta ccs_1.50-00560 paketo versija nelabai veikė su mano kortele.
    Teko siųstis naujesnę ccs_2.00-00261 versiją tiesiai iš CryptoTech svetainės:
    http://www.cryptotech.com.pl/Produkty/C ... ntent.html ("Biblioteka PKCS#11 dla CryptoCard Suite 2.x w wersji Linux x64 (64 bit)" nuoroda, arba rinktis analogišką 32 bitų nuorodą)

  2. Reikalingi Ubuntu paketai ir komandos aprašyti čia:
    https://help.ubuntu.com/community/CommonAccessCard
    Man užteko komandos:

    sudo apt-get install libpcsclite1 pcscd pcsc-tools
    

    Po šio žingsnio man reikėjo įdiegti Omnikey skaitytuvo tvarkykles (žr. aukščiau, ties "Tech įranga")
    pcsc_scan komanda galima pasitikrinti, ar matoma į skaitytuvą įdėta kortelė,
    autorizacijai iš kortelės, reikalingas pastartuotas pcscd daemonas.

  3. Pasirašymui su Java appletu (jei naršyklėje veikia Java plugin) tokio pasiruošimo turi užtekti, ar jis veikia, galima pasitikrinti jungiantis prie Sodros puslapio:
    https://gyventojai.sodra.lt/faces/pages ... Login.jspx
    Prie "Elektroninių valdžios vartų" https://www.epaslaugos.lt/portal/login.zul deja prisijungti nepavyks, nes Java appletas ieško Windowsinio sertifikato, apie problemą yra pranešta nurodytais kontaktais, žadėjo kažkada pataisyti.

  4. Pasirašymui su naršykle Firefox galima naudotis VRM metodiniais nurodymais:
    http://www.nsc.vrm.lt/docs/Kompiuterio% ... x%20v1.pdf
    Pasirašymui su Chromium naršykle info pateikta:
    https://help.ubuntu.com/community/CommonAccessCard "Google Chrome/Chromium Setup" sekcijoje.
    Pasirašymą per naršyklę galima išbandyti jungiantis prie Swedbank internetinės bankininkystės, taip pat prie Registrų centro http://www.registrucentras.lt/savitarna/

B
  • 13 Grd '14

gaila nėra Like mygtuko.

D
  • 27 Kov '15

Hm, man kažkas neveikia.

Mano kortelė kita – Omnikey 1021, kurią nurodyti draiveriai irgi palaiko (pagal Readme failą).

Bet kai paleidžiu komandą pcsc_scan kortelės statusą skaitiklyje rodo trejopai ir tos būsenos vis keičiasi. Tai „Card inserted“, tai „Status unavailable“, tai „Card inserted, Shared mode“... - žr. žemiau.

Sodros puslapyje su Firefox ir Oracle Java 7 prisijungti nepavyksta (java apletas prašo įdėti kortelę Registrų centro svetainėje, tiksliau, gosign.lt, dokumento pasirašyti nepavyksta (gaunu pranešimą, kad pasirašymo komponento nepavyko įkelti). Galėsiu vėliau įdėti daugiau detalių, bet – gal kažkam jau teko susidurti, gal žinote, jog Omnikey 1021 tiesiog neveikia su Linux?

Naudoju Kubuntu 14.04 LTS, x86. Tvarkykles įdiegiau ifdokccid_linux_i686-v4.1.5.bundle programinę įrangą bandžiau ir 2 versijos, ir 1.5, rezultatai tie patys.

$ pcsc_scan 
PC/SC device scanner
V 1.4.22 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.8.10
Using reader plug'n play mechanism
Scanning present readers...
0: OMNIKEY CardMan (076B:3022) 3021 00 00

Fri Mar 27 14:25:18 2015
Reader 0: OMNIKEY CardMan (076B:3022) 3021 00 00
  Card state: Card inserted, Shared Mode, 
  ATR: 3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8

ATR: 3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8
+ TS = 3B --> Direct Convention
+ T0 = F8, Y(1): 1111, K: 8 (historical bytes)
  TA(1) = 13 --> Fi=372, Di=4, 93 cycles/ETU
    43010 bits/s at 4 MHz, fMax for Fi = 5 MHz => 53763 bits/s                                                                                                             
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
  TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 
-----
  TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 
-----
  TA(3) = FE --> IFSC: 254
  TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5
+ Historical bytes: 53 6D 61 72 74 41 70 70
  Category indicator byte: 53 (proprietary format)
+ TCK = F8 (correct checksum)

Possibly identified card (using /home/dg/.cache/smartcard_list.txt):
3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8
        national Lithuania ID card

Fri Mar 27 14:25:21 2015
Reader 0: OMNIKEY CardMan (076B:3022) 3021 00 00
  Card state: Status unavailable, 

Fri Mar 27 14:25:25 2015
Reader 0: OMNIKEY CardMan (076B:3022) 3021 00 00
  Card state: Card inserted, 
  ATR: 3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8

ATR: 3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8
+ TS = 3B --> Direct Convention
+ T0 = F8, Y(1): 1111, K: 8 (historical bytes)
  TA(1) = 13 --> Fi=372, Di=4, 93 cycles/ETU
    43010 bits/s at 4 MHz, fMax for Fi = 5 MHz => 53763 bits/s                                                                                                             
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
  TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 
-----
  TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 
-----
  TA(3) = FE --> IFSC: 254
  TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5
+ Historical bytes: 53 6D 61 72 74 41 70 70
  Category indicator byte: 53 (proprietary format)
+ TCK = F8 (correct checksum)

Possibly identified card (using /home/dg/.cache/smartcard_list.txt):
3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8
        national Lithuania ID card

Fri Mar 27 14:25:29 2015
Reader 0: OMNIKEY CardMan (076B:3022) 3021 00 00
  Card state: Status unavailable, 

Fri Mar 27 14:25:32 2015
Reader 0: OMNIKEY CardMan (076B:3022) 3021 00 00
  Card state: Card inserted, 
  ATR: 3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8

ATR: 3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8
+ TS = 3B --> Direct Convention
+ T0 = F8, Y(1): 1111, K: 8 (historical bytes)
  TA(1) = 13 --> Fi=372, Di=4, 93 cycles/ETU
    43010 bits/s at 4 MHz, fMax for Fi = 5 MHz => 53763 bits/s
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
  TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 
-----
  TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 
-----
  TA(3) = FE --> IFSC: 254
  TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5
+ Historical bytes: 53 6D 61 72 74 41 70 70
  Category indicator byte: 53 (proprietary format)
+ TCK = F8 (correct checksum)

Possibly identified card (using /home/dg/.cache/smartcard_list.txt):
3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8
        national Lithuania ID card

Fri Mar 27 14:25:36 2015
Reader 0: OMNIKEY CardMan (076B:3022) 3021 00 00
  Card state: Status unavailable, 

Fri Mar 27 14:25:39 2015
Reader 0: OMNIKEY CardMan (076B:3022) 3021 00 00
  Card state: Card inserted, 
  ATR: 3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8

ATR: 3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8
+ TS = 3B --> Direct Convention
+ T0 = F8, Y(1): 1111, K: 8 (historical bytes)
  TA(1) = 13 --> Fi=372, Di=4, 93 cycles/ETU
    43010 bits/s at 4 MHz, fMax for Fi = 5 MHz => 53763 bits/s
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
  TD(1) = 81 --> Y(i+1) = 1000, Protocol T = 1 
-----
  TD(2) = 31 --> Y(i+1) = 0011, Protocol T = 1 
-----
  TA(3) = FE --> IFSC: 254
  TB(3) = 45 --> Block Waiting Integer: 4 - Character Waiting Integer: 5
+ Historical bytes: 53 6D 61 72 74 41 70 70
  Category indicator byte: 53 (proprietary format)
+ TCK = F8 (correct checksum)

Possibly identified card (using /home/dg/.cache/smartcard_list.txt):
3B F8 13 00 00 81 31 FE 45 53 6D 61 72 74 41 70 70 F8
        national Lithuania ID card
^C
D
  • 27 Kov '15

Problema išspręsta. Įdiegiau senesnę skaitytuvo tvarkyklės versiją 4.0.5.5 ir pradėjo veikti (neveikė su naujausia 4.1.5 versija). Dabar LED indikatorius dega nuolat, ir sumirksi tik kompiuteriui bandant nuskaityti sertifikatą (pvz. registruojantis prie Sodros sistemos).

Taigi, turime dar vieną išbandytą skaitytuvę: Omnikey 1021

Kas veikia:

  • registracija prie SODRA sistemos
  • ADOC dokumentų sudarymas ir pasirašymas http://adoc.archyvai.lt/
  • registracija prie Registrų centro paslaugų

Kas neveikia:

  • Elektroniniai valdžios vartai: skundžiasi, kad nėra galiojančio sertifikato (matyt dar nepataisyta ana problema, paminėta @jeegi).
  • PDF dokumentų pasirašymas gosign.lt (kaip nebūtų keista, tai – irgi Registrų centro paslauga... meta klaidą „Nepavyko inicializuoti PKCS11 stacionaraus pasirašymo infrastruktūros.“)

Gal kas žinote, kaip galima pasikeisti PIN Linux sistemoje? Pamėginau naudoti Belgiškų eID tvarkytuvę (eid-viewer), bet ji net nenuskaito sertifikato informacijos.

D
  • 6 Bal '15

Keista, susidūriau su problema 64 bitų kompiuteryje. Su Valstybės tarnautojo pažymėjimu prisiregistruoti sodros svetainėje išeina. Tuo tarpu su Asmens tapatybės kortele - ne. (Tas pats - ir pasirašant dokumentus adoc.archyvai.lt)

$ java -version                                                                                                                                     
java version "1.7.0_76"                                                                                                                                           
Java(TM) SE Runtime Environment (build 1.7.0_76-b13)                                                                                                              
Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)

su tokia pat tik 32 bitų java kitame kompe abi kortelės veikia.

64 bitų sistemoje bandant prisijungti prie sodros svetainės, jau įvedus slaptažodį meta klaidą:

„Klaida generuojant parašą“
„Techninė informacija:“

java.util.concurrent.ExecutionException: java.security.SignatureException: libccpkip11.so: CKR_KEY_TYPE_INCONSISTENT
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:188)
    at javax.swing.SwingWorker.get(SwingWorker.java:602)
    at lt.mitsoft.pki.signatures.applet.c.propertyChange(SourceFile:368)
    at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
    at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327)
    at javax.swing.SwingWorker$SwingWorkerPropertyChangeSupport.firePropertyChange(SwingWorker.java:854)
    at javax.swing.SwingWorker$SwingWorkerPropertyChangeSupport$1.run(SwingWorker.java:859)
    at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
    at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
    at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
    at javax.swing.Timer.fireActionPerformed(Timer.java:312)
    at javax.swing.Timer$DoPostEvent.run(Timer.java:244)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:738)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:699)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:708)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
    at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
    at java.awt.Dialog.show(Dialog.java:1082)
    at java.awt.Component.show(Component.java:1655)
    at java.awt.Component.setVisible(Component.java:1607)
    at java.awt.Window.setVisible(Window.java:1014)
    at java.awt.Dialog.setVisible(Dialog.java:1005)
    at lt.mitsoft.pki.signatures.ui.a.setVisible(SourceFile:101)
    at lt.mitsoft.pki.signatures.applet.a.run(SourceFile:140)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:738)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:699)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:708)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: java.security.SignatureException: libccpkip11.so: CKR_KEY_TYPE_INCONSISTENT
    at lt.mitsoft.pki.signatures.c.a.a.b$d.a(SourceFile:338)
    at lt.mitsoft.pki.signatures.c.a.a.e$a.engineSign(SourceFile:91)
    at java.security.Signature$Delegate.engineSign(Signature.java:1180)
    at java.security.Signature.sign(Signature.java:553)
    at lt.mitsoft.pki.signatures.applet.SSCDSignerApplet$a.doInBackground(SourceFile:63)
    at javax.swing.SwingWorker$1.call(SwingWorker.java:296)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at javax.swing.SwingWorker.run(SwingWorker.java:335)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_KEY_TYPE_INCONSISTENT
    at sun.security.pkcs11.wrapper.PKCS11.C_Sign(Native Method)
    at lt.mitsoft.pki.signatures.c.a.a.b$d.a(SourceFile:331)
    ... 10 more

Gal kas suprantate, ką vis tai reiškia?

(ps. visa tai daroma įdiegus Ubuntu Vivid amd64; gal per daug noriu, kad veiktų nestabilioj sistemoj el. parašas?)

T
Techtronic
Mindaugas N.
  • 7 Bal '15

Gal tai kiek pades...

Exceptionas CKR_KEY_TYPE_INCONSISTENT reiskia:

The specified key is not the correct type of key to use with the specified mechanism.

Netikiu kad ant 64bits nurodomas kitoks key, gal length yra blogas. Gal debugeris daugiau pasakytu.

D
  • 11 Rugp '15

Vienžo, sorry dėl ankstesnio klausimo. Viskas tvarkoj su 64 bitais, tiesiog buvau įdiegęs per klaidą tą neveikiančią tvarkyklę, kur aukščiau minėjau.

Dar viena naujiena. Tą neveikiančią tvarkyklę gamintojas pataisė, išleido pataisytą versiją: ifdokccid_linux_i686-v4.1.7.tgz . Ką tik ją patikrinau, veikia. Pranešiu gamintojui, ir greitai ji bus pateikta viešam atsisiuntimui.

Dar viena gera naujiena - kad su naujasnėmis LibreOffice versijomis - atrodo nuo 4.4 - jau galima pasirašyti pdf'us kai jie yra generuojami iš OpenDocument failų, žr. https://libreoffice-from-collabora.com/ ... f-signing/

Kita vertus, jokių gerų naujienų nei iš Registrų centro dėl paslaugos gosign.lt, nei iš Elektroninių valdžios vartų. Tomis paslaugomis pasinaudoti su ATK ir Linux kol kas nepavyks.

J
  • 2 Spa '15

Perklausiau ivpk.lt dėl valdžios vartų problemos jungiantis per Linux su tapatybės kortele.

Panašu, kad dėl per mažo jų nuomone Linux naudotojų skaičiaus jie nesiėmė šios problemos spręsti, bet informavo, kad ruošiasi paleisti autorizaciją tiesiai per Chrome naršyklę, be java appleto.

Reikia tikėtis autorizacija per naršyklę bus padaryta tvarkingai ir bus galima jungtis į elektroninius valdžios vartus.

J
  • 5 Spa '15

Beje dėl CKR_KEY_TYPE_INCONSISTENT, pasibandžiau instaliavimą nuo 0 su Fedora 22 verija, man šitą klaidą metė, kai buvo sudiegtos ccs_1.50-00560.amd64.rpm versijos bibliotekos.

Klaida išnyko su ccs_2.00-00261.amd64.rpm versija. Dėja neduoda atnaujinti howto aprašymo, tam kad įdėti paaiškinimą dėl klaidos :-/

J
  • 5 Spa '15

@dgvirtual rašė:
....
Gal kas žinote, kaip galima pasikeisti PIN Linux sistemoje? Pamėginau naudoti Belgiškų eID tvarkytuvę (eid-viewer), bet ji net nenuskaito sertifikato informacijos.

Susidėjus libccpkip11.so į Firefox per saugumo priemonių meniu dešinėje yra punktas "Pakeisti slaptažodį", aš pats kol kas nebandžiau keisti

J
  • 16 Grd '15

@jeegi rašė:
Perklausiau ivpk.lt dėl valdžios vartų problemos jungiantis per Linux su tapatybės kortele.

Panašu, kad dėl per mažo jų nuomone Linux naudotojų skaičiaus jie nesiėmė šios problemos spręsti, bet informavo, kad ruošiasi paleisti autorizaciją tiesiai per Chrome naršyklę, be java appleto.

Reikia tikėtis autorizacija per naršyklę bus padaryta tvarkingai ir bus galima jungtis į elektroninius valdžios vartus.

Jau veikia ir el. valdžios vartų https://www.epaslaugos.lt/ autorizacija su asmens tapatybės kortele, per Firefox veikia su java appletu, per Chromium su spec plėtiniu, kurį pasiūlo instaliuoti jungiantis prie vartų.

Šaunuoliai, kad nemelavo, ir prisijungimą iš Linux sutvarkė.