Klijentska aplikacija NexU-APR nije ogovarajuće podešena za korisnike 64bitne verzije Windowsa, kada se koristi PKCS#11 kao metod pristupa tokenu, a posebno problem imaju korisnici sertifikata sertifikacionog tela Halcom čak i kada instaliraju novu verziju Nexus Personal midlvera.

Kod 32bitnog Windowsa svi programi i komponente su 32bitni pa ne dolazi do zabune. Međutim kod 64bitnog Windowsa moguće je pokretati i 32bitne i 64bitne programe pa je potrebno tačno upariti Javu, klijentsku aplikaciju i PKCS#11 modul.

NexU-APR aplikacija dolazi sa sopstvenom instalacijom Jave. Zato instalacioni paket ima čak 80 megabajta, ali je zgodno što će makar Java biti ispravno podešena. Ova verzija Jave je 32bitna, pa bez obzira imate li 64bitni ili 32bitni Windows kada instalirate i pokrenete NexU-APR aplikaciju koristićete 32bitnu Javu. To će nam kasnije biti značajno.

Instalacija midlvera

Instalacije midlvera uglavnom dolaze u različitoj varijanti za 32bitni i 64bitni Windows (AET SafeSign za korisnike Pošte, TrustEdgeID za PKS/MUP/Vojsku, te RSIDCardMW za stare lične karte). Ukoliko koristite 64bitni Windows potrebno je da instalirate 64bitnu verziju instalacije midlvera.

Nexus Personal za Halcom sertifikate u sebi sadrži obe verzije, dok IDPrime za korisnike sertifikacionog tela E-Smart ima deo koji zavisi od „bitnosti“ sistema, i zajedničku instalaciju za PKCS#11 modul.

TrustEdgeID dolazi u dve verzije, postoji stara verzija koja ima odvojenu instalaciju za PKS i MUP, te nova verzija (dostupna sa sajtova sertifikacionog tela PKS i Vojske) koja podržava rad sa karticama i tokenima sva tri tela. Instalacija nove zajedničke verzije uklanja odvojene instalacije.

PKCS#11 moduli

Sve pomenute 64bitne instalacije midlvera kada se instaliraju u sebi sadrže i 32bitnu i 64bitnu verziju PKCS#11 modula. U pitanju je .dll datoteka koja se nakon instalacije nalazi negde na računaru. Ovaj modul se najčešće naslanja na Windows i midlver sa kojim korisnik interaguje preko nekog pomoćnog programa (npr. Token Manager, Token Administrator,…).

Drugi programi (Mozilla Firefox ili u ovom slučaju NexU-APR) mogu da učitaju PKCS#11 modul i tako koriste pametnu karticu ili token za kriptografske operacije. Na taj način programi mogu da podrže različite uređaje, pod uslovom da uređaj poseduje ispravan PKCS#11 modul koji korisnik može da učita u program.

Tehnička napomena za programere aplikacija...

Alternativa PKCS#11 modulima je da programi koriste uslugu Windows operativnog sistema (u NexU-APR aplikaciji ovo je opcija „Microsoft skladište ključeva“) kada se zaobilazi PKCS#11 modul i tokenima pristupa kroz Microsoft CryptoAPI (skraćeno MS-CAPI).

Sa oba je moguće postići sličan rezultat, a izbor uglavnom zavisi od mogućnosti tehnologije kojom se pravi aplikacija. Midlveri za tokene i kartice koje koriste domaća sertifikaciona tela podržavaju oba interfejsa, iako bi teorijski mogao da postoji token koji ima samo PKCS#11 ili samo MS-CAPI podršku. Pristupom kroz PKCS#11 veći akcenat se stavlja na uređaj koji sadrži objekte (ključevi, sertifikati) i nudi operacije. Pristupom kroz MS-CAPI dobija se lista instaliranih sertifikata u Personal skladištu, bez obzira u kom uređaju se nalaze, a operacije sprovodi operativni sistem preko registrovanog midlvera.

Programi koji učitavaju PKCS#11 module mogu da rade i na drugim operativnim sistemima (pod uslovom da je i odgovarajući PKCS#11 modul dostupan za taj sistem), dok je MS-CAPI interfejs dostupan samo na Windowsu.

Midlver može da ima različiti kvalitet implementacije ova dva interfejsa, pa tako neki token može da radi pouzdano kada mu se pristupa kroz MS-CAPI, a da izaziva rušenje aplikacije kada korisnik pokuša da koristi PKCS#11 modul. Ili može da ne vidi ili prikazuje ranije uočene sertifikate kroz MS-CAPI, a da sasvim ispravno radi kroz PKCS#11 interfejs.

Kada se koristi MS-CAPI u kombinaciji sa pametnim karticama i tokenima Windows automatski poziva midlver prema ATR vrednosti, dok u slučaju PKCS#11 interfejsa taj deo mora da odradi aplikacija ili da prepusti korisniku da ručno izabere modul.

Izbor PKCS#11 modula u NexU-APR aplikaciji

Kako se NexU-APR pokreće 32bitnom Javom bez obzira da li koristite 32bitni ili 64bitni Windows, potrebno je da se u aplikaciji odabere 32bitni PKCS#11 modul.

Kada koristite 32bitni Windows situacija je jasna - sve je 32bitno i problema nema. Ali ako imate 64bitni Windows, potrebno je da prvo instalirate 64bitnu instalaciju midlvera, ali zatim da u NexU-APR aplikaciji odaberete putanju za 32bitni PKCS#11 modul! Ako bi u tom slučaju pokušali da u NexU-APR aplikaciji odaberete 64bitni modul prikazaće se greška:

Opis greške nije tačan. Greška se javlja jer biblioteka ne odgovara Javi (koja je 32bitna), a ne zato što ne odgovara sistemu.

Putanja do 32bitnog PKCS#11 modula može da se razlikuje na 32bitnom i na 64bitnom sistemu. Zato evropski projekat DSS NexU na kome je zasnovana APR-ova aplikacija omogućava programerima da u konfiguraciji aplikacije navedu jednu putanju do 32bitnog PKCS#11 modula na 32bitnom i drugu do istog modula na 64bitnom Windowsu. Kada se ispravno podesi, olakšava se korisnicima jer se automatski bira prava putanja. Međutim programeri koji su priredili APR-ovu aplikaciju su ovo izgleda pogrešno razumeli i u drugom slučaju naveli putanje do 64bitnih modula što dovodi do gore prikazane greške. APR NexU aplikacija inicijalno učitava prvi PKCS#11 modul na koji naiđe, uopšte ne proveravajući bitnost Jave i operativnog sistema. U konfiguraciji 64bitne putanje su navedene prve, pa ih aplikacija inicijalno nudi kada postoje nakon instalacije 64bitnog midlvera. Programeri 64bitne putanje nije trebalo da navode u konfiguraciji pošto nikako ne mogu da rade sa 32bitnom Javom. Ispravno rešenje bi bilo prepoznati bitnost samog Windowsa *), a zatim učitati putanju do 32bitnog PKCS#11 modula pošto znamo da aplikacija dolazi sa svojom 32bitnom Javom.

Igrom slučaja, izuzev kod Halcoma, kod svih su putanje do 32bitnog modula iste i na 32bitnom i na 64bitnom Windowsu.

To znači da ako koristite 64bitni Windows, dok programeri ne isprave konfiguraciju, u NexU-APR aplikaciji obavezno kliknite na detaljna podešavanja i zatim izaberite 32bitnu varijantu odgovarajućeg modula pre nego što nastavite.

Korisnici Halcom sertifikata moraju da izmene putanju, pošto se tu putanje razlikuju i nije moguće da se na 64bitnom Windowsu samo izabere ponuđena 32bitna putanja.

Dodak u vezi Halcom sertifikata: Nisam imao priliku da testiram, ali korisici prijavljuju da kada u aktuelnoj verziji NexU aplikacije 1.01 pokušate da koristite Halcom sertifikate preko direktnog pristupa kroz PKCS#11 modul dolazi do greške:
Greška prilikom potpisivanja dokumenta: java.security.InvalidKeyException: Private keys must be instance of RSAPrivate(Crt)Key or have PKCS#8 encoding
Rеšenje je da u prvom koraku birate drugu opciju, Microsoft skladište ključeva umesto opcije za direktan pristup tokenu.

Tačne putanje do 32bitnog PKCS#11 modula za midlvere tokena sertifikacionih tela u Srbiji su date u tabeli.

Naziv midlvera 32bitni modul na
32bitnom Windowsu
32bitni modul na
64bitnom Windowsu
AET SafeSign (Pošta) C:\Windows\System32\aetpkss1.dll (koristi se ista putanja, vidi napomenu)
Nexus Personal (Halcom) C:\Program Files\Personal\bin\personal.dll C:\Program Files (x86)\Personal\bin\personal.dll
RSID Card MW (MUP, lične karte pre 18.8.2014) C:\Program Files\MUP RS\Republic of Serbia ID Card Middleware\rsidp11_x86.dll
MUP TrustEdgeID C:\Program Files\NetSeT\TrustEdgeID\netsetpkcs11_x86.dll
PKS TrustEdgeID (stari) C:\Program Files\NetSeT\TrustEdgeID PKS\netsetpkcs11_x86.dll
TrustEdgeID (novi zajednički za PKS/MUP/VS) C:\Program Files\TrustEdgeID\netsetpkcs11_x86.dll
IDPrime (E-Smart) C:\ESSQCA\pkcs11\IDPrimePKCS11.dll
Napomena: U slučaju AET SafeSign midlvera na 64bitnoj Windows instalaciji Windows-on-Windows podsistem automatski vrši prepravku putanje sa C:\Windows\System32\aetpkss1.dll na C:\Windows\SysWOW64\aetpkss1.dll. Zato korisnici Pošte nemaju posebne 32bitne i 64bitne putanje.

Izvor: Putanje pkcs#11 midlvera sertifikacionih tela u Srbiji

Kako da izmenite putanje u NexU-APR?

Da izmenite podešavanja, na primer za MUP, izaberite u listi Sertifikaciono telo MUP Republike Srbije pa kliknite na Detaljna podešavanja. Zatim odaberite TrustEdgeID - 64bit kako bi popravili tu putanju, pa kliknite na Izmeni. U prozorčetu koje će se otvoriti kliknite na dugme Odaberi, a potom u polje na dnu kopirajte putanju iz tabele.


Potvrdite klikom na Open ili Otvori i zatim kliknite na Prihvati.

Postoji i donekle jednostavan način da trajno ispravite sve putanje odjednom.

Preuzmite ovu ZIP arhivu i otvorite je. U njoj se nalazi XML datoteka sa podešavanjima koja ćemo ubaciti u NexU aplikaciju. Ukoliko je aplikacija pokrenuta, najpre zatvorite NexU desnim klikom na ikonicu pored sata, pa iz menija izaberite Izlaz i sačekajte da ikonica nestane.

Sada treba da otvorimo fasciklu (folder) sa podešavanjima NexU aplikacije i to tako što na tastaturi istovremeno pritisnete Win taster i taster R, ili iz Start menija odaberite opciju Run/Pokreni. Kopirajte %userprofile%\.NexUApr u polje za unos i kliknite Ok, odnosno U redu.

Ukoliko uradite tako, otvoriće se fascikla sa NexU podešavanjima.

Prevucite XML datoteku iz ZIP arhive u fasciklu sa podešavanjima NexU aplikacije, menjajući postojeću. Pokrenite ponovo NexU aplikaciju i sve putanje će biti ispravne, a među putanjama za Sertifikaciono telo MUP-a dobićete i dodatnu opciju sa putanjom za novi TrustEdgeID midlver.

Novi TrustEdgeID midlver

Novi zajednički TrustEdgeID midlver podržava nove lične karte (od 18.8.2014), kartice i tokene Privredne komore Srbije i sertifikacionog tela Vojske Srbije. Dostupan je za preuzimanje sa sajtova PKS i Vojske, a njegova instalacija će obrisati prethodne odvojene instalacije za MUP i PKS, pa postojeće putanje u NexU aplikaciji neće raditi.

Pri pravljenju liste dostupnih sertifikata NexU-APR aplikacija prihvata samo one sertifikate koji odgovaraju izabranom sertifikacionom telu, dok će ostali sertifikati biti prikazani sa crvenim kružićem kao nevalidni.

To znači da ukoliko koristite zajednički midlver u NexU-APR aplikaciji morate da dodate i opciju sa putanjom do zajedničkog modula prema tabeli iznad, unutar ponuđenih putanja za Sertifikaciono telo MUP Republike Srbije.

Ove putanje već postoje među ponuđenima za PKS pa tu neće biti problema.

Aplikacija NexU-APR nema podršku za sertifikate koje izdaje sertifikaciono telo Vojske Srbije kada se koristi PKCS#11 kao metod pristupa tokenu. Moguće da podrška postoji kada se koristi Windows skladište sertifikata. Do sada nikada nisam video dokument potpisan takvim sertifikatom i ne znam kome su sertifikati dodeljeni niti koliko ih je izdato.

Oznaka slota

Kod PKCS#11 modula oznaka slota zavisno od implementacije modula može da označava redni broj čitača kartica ili tokena, ili redni broj kontejnera unutar jednog tokena ili kartice.

Ukoliko koristite više čitača kartica na računaru, ili ste nekada imali drugi čitač, ili koristite tokene (što je zapravo čitač kartica i kartica spojeno u jednom uređaju) najverovatnije ćete morati da podešavate i slot. Nažalost, mislim da nema lakog načina da saznate pravu vrednost već morate da isprobavate.

Isprobajte uvek najpre slot 0.



Ako se prikaže ova greška, a sigurni ste da ste izabrali pravo sertifikaciono telo i vidite sertifikate u pratećoj aplikaciji (Token Administrator, Token Manager, Nexus Personal...) znači da aplikacija traži sertifikate na pogrešnom mestu, pa povećajte slot za 1 i pokušajte ponovo.


Ako se prikaže ovakva greška, znači da smo preterali sve slotove (obratite pažnju na deo poruke „but token only has ... slots“), pa smanjite slot za 1 i pokušajte ponovo.

Zavisno od redosleda korišćenja tokena i kartica oznaka slota može da se promeni. Ne mora da znači da token koji je ranije radio sa slot 1, sada neće zahtevati slot 0 i obrnuto.

Biću zahvalan ako u komentaru napišite efikasniji način da se odredi prava vrednost slota, posebno ako imate programersko iskustvo u radu sa PKCS#11 modulima.

Srećno u potpisivanju!