Gemalto Cryptoflex na Linuxu
Ovaj podsetnik je pravljen za
- Fedora 11
Gemalto GemPlus GemPC Twin smart card reader
- Gemalto Cryptoflex e-gate 32K v4
Instalacija softvera
Paket OpenCT je verovatno već instaliran. Treba ga deinstalirati i instalirati OpenSC (OpenCT će biti ponovo instaliran kao dependency), i instalirati engine_pkcs11 modul za OpenSSL.
yum -y erase openct yum -y install opensc engine_pkcs11 tinyca2 gdm-plugin-smartcard openct-control init
Verovatno su već instalirani ccid (drajver za razne smart kartice), pcscd i coolkey.
Detekcija čitača i kartice
Utaknuti USB smart card reader. Možemo izlistati prepoznate čitače:
opensc-tool -l
Ako je pod rednim brojem 5 prijavljen GemPlus GemPC Twin čitač, možemo ubaciti karticu i proveriti njen tip:
opensc-tool -r 5 -n
Možemo rekurzivno izlistati sadržaj kartice (ako je potreban PIN, ne mora prikazati sve):
opensc-tool -r 5 -f
Za Cryptoflex kartice postoji i poseban program cryptoflex-tool.
Inicijalizacija kartice
OpenSC programi neće raditi sa karticom sve dok se ona ne inicijalizuje po PKCS#15 standardu. Osnovno kreiranje strukture fajlova postiže se komandom:
pkcs15-init -C
(tu će pitati za security officer PIN (koji nam ne treba) i transport key; ukoliko transport key nije menjan može se preuzeti default vrednost).
Sada je potrebno dodati PIN:
pkcs15-init --store-pin --id 01 --label "Branko Milosavljevic"
Dalje se može generisati par ključeva na kartici:
pkcs15-init --generate-key rsa/1024 --auth-id 01 --label "Branko Milosavljevic"
Potom se može izlistati sadržaj objekata na kartici. Tom prilikom treba zapamtiti i ID ključa (tipično 45):
pkcs15-tool -D
Kartica leži u nekom od virtuelnih slotova. Slotove možemo izlistati komandom:
pkcs11-tool -L
Za generisanje self-signed sertifikata koristićemo OpenSSL i modul engine_pkcs11. Obrati pažnju na slot u kome se nalazi kartica i ID ključa (u ovom primeru slot je 8, a ID ključa je 45).
$ openssl OpenSSL> engine -t dynamic -pre SO_PATH:/usr/lib/openssl/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/pkcs11/opensc-pkcs11.so OpenSSL> req -engine pkcs11 -new -key slot_8-id_45 -keyform engine -x509 -out cert.pem -text OpenSSL> quit
Umesto self-signed sertifikata, izostavljanjem opcije -x509 može se generisati CSR fajl koji se šalje CA-ju na potpisivanje.
Sada se generisani sertifikat može upisati na karticu:
pkcs15-init --store-certificate cert.pem --auth-id 01 --id 45 --format pem
Firefox
- Otvoriti Preferences / Advanced / Encryption, kliknuti na Security Devices,
- kliknuti na Load,
- u polje Module name uneti OpenSC module, u polje Module filename uneti /usr/lib/pkcs11/opensc-pkcs11.so
- kliknuti OK
- u Security modules listi selektovati novi modul, sa imenom "OpenSC Card (Branko Milosavljevic)"
- kliknuti na Log In
- uneti PIN
Thunderbird
Procedura je istovetna kao i za Firefox. Nakon što se registruje kartica i čitač, u Account Settings / Security može se izabrati sertifikat na kartici za potpisivanje i šifrovanje email poruka.
OpenOffice
Na Linuxu, OpenOffice deli definicije sertifikata sa Mozilla browserom (Firefox), tako da bi uz prethodno podešavanje ovih programa potpisivanje dokumenata već trebalo da radi i u OpenOfficeu.
Adobe Reader 9
Izabrati Document / Security Settings, registrovati novi PKCS#11 modul, izabrati fajl /usr/lib/pkcs11/opensc-pkcs11.so, proveriti da li se vidi sertifikat. Potpisivanje može da se radi na dokumentima nad kojima je potpisivanje dozvoljeno (često nije). Šta je dozvoljeno može se proveriti u Document / Security / Show Security properties.
Java
Java programi će koristiti OpenSC kao PKCS#11 provajder uz odgovarajući cfg fajl:
name = OpenSC
description = SunPKCS11 w/ OpenSC Smart card Framework
library = /usr/lib/pkcs11/opensc-pkcs11.so
attributes(*,CKO_PRIVATE_KEY,*) = {
CKA_TOKEN = true
CKA_PRIVATE = true
CKA_DECRYPT = true
CKA_SIGN = true
}
Login
Za login se koristi:
- pam_pkcs11: modul za autentifikaciju koji pristupa kartici preko PKCS#11 provajdera
- OpenSC: kao PKCS#11 provajder
- NSS (Network Security Services): biblioteke za cross-platform klijent/server security. Fedora i RHEL se oslanjaju na NSS kao jedinstvenu crypto implementaciju (i skladište sertifikata) za ceo sistem. Fedorina varijanta pam_pkcs11 modula se oslanja na NSS.
Uključivanje pam_pkcs11
Prvo je potrebno uključiti upotrebu pam_pkcs11 modula za autentifikaciju. To je najlakše uraditi pomoću grafičkih alata. Otvoriti System / Administration / Authentication, kartica Authentication, uključiti Enable Smart Card Support, kliknuti na Configure Smart Card, izabrati šta se dešava kada se kartica izvadi (ignore ili lock) i pozatvarati prozore. Nakon ovoga u fajlu /etc/pam.d/system-auth dodati su redovi:
auth [success=1 default=ignore] pam_succeed_if.so service notin login:gdm:xdm:kdm:xscreensaver:gnome-screensaver:kscreensaver quiet use_uid auth [success=done authinfo_unavail=ignore ignore=ignore default=die] pam_pkcs11.so
Konfiguracija pam_pkcs11
Drugo, potrebno je konfigurisati pam_pkcs11 modul u fajlu /etc/pam_pkcs11/pam_pkcs11.conf. Sledeće linije treba proveriti/izmeniti:
enable_ocsp = false; use_pkcs11_module = opensc; cert_policy = none; use_mappers = cn, none;
U okviru definicije opensc modula treba dodati red:
nss_dir = /etc/pki/nssdb;
Prilikom konfigurisanja isplati se uključiti debug mod:
debug = true;
Instaliranje CA sertifikata
Kao mini aplikacija za rad CA može da posluži TinyCA2. Potrebno je inicijalizovati CA, i potom potpisati korisnički sertifikat (koji je generisan pomoću OpenSSL, samo bez opcije -x509).
Eksportovani CA sertifikat iz TinyCA2 može se importovati u NSS bazu:
certutil -A -n "Moj root CA" -t "CT,C,C" -a -i CAcert.pem -d /etc/pki/nssdb
Provera korisničkih sertifikata
Programom pkcs11_inspect može se proveriti da li se sertifikat na kartici ispravno validira.
$ pkcs11_inspect PIN for token: Printing data for mapper cn: Branko Milosavljevic
Programom pklogin_finder proverava se da li će izabrani maperi (u našem slučaju cn maper) pravilno mapirati korisnika na sistemu na osnovu DN u sertifikatu. CN maper koristi CN polje iz DN-a u sertifikatu za pronalaženje korisnika.
$ pklogin_finder PIN for token: branko
Prijavljivanje na sistem
Ako je instaliran gdm-plugin-smartcard, na login ekranu će se pojaviti i stavka "smart card authentication", koja će omogućiti autentifikaciju pomoću kartice i PIN-a. Ukoliko su prethodne provere bile uspešne, i stvarno prijavljivanje na sistem bi trebalo da bude uspešno.
