SmartCards

Från FriBID
Hoppa till: navigering, sök

Denna sida kan bara redigeras av inloggade användare pga upprepad länkspam,

Introduktion

För Smartcard-stöd behöver du följande:

Drivrutinen för Handelsbankens kortläsare hittar du på:

Installation Ubuntu / Debian

Installera smartkorts-server och OpenSC

 $ sudo apt-get install pcscd opensc

Installera libp11(-2) och pkcs15-data om du vill cachea kort-informationen, se nedan

 $ sudo apt-get install libp11-2 pkcs15-data

Installera Handelsbankens 64-bitars drivrutin eller

 $ sudo dpkg -i SHB_Deb_1.0.2_64bit.deb

32-bits drivrutin (dessa hamnar i /usr/lib[64]/pcsc/drivers/ )

 $ sudo dpkg -i SHB_Deb_1.0.2_32bit.deb

Du behöver även ändra inställningarna i /etc/init.d/pcscd för att den ska starta vid boot

 # DO NOT start the daemon on startup
 # comment the line to have the same behavior as in version < 1.6.0
 # exit 0 <-- kommentera bort denna

Tidigare diskussion:

OBS!! Det verkar inte fungera i Ubuntu 11.04 - får en segfault inne i SHB pluginen. //Marcus 2011-04-29
Uppdatering igen: Det verkar som att om man remmar den rad som heter exit 0 på 43 så verkar det fungera. Någon med mer tid får gärna titta på varför :) ... //Marcus 2011-05-01
En fråga.. "exit 0 på 43", jag antar att 43 är ett radnummer i en fil, men vilken? // Micke 2011-05-16
/etc/init.d/pcscd - funkade för mig också när jag kommenterade bort denna rad //Roland 2011-05-19
Segfaultet gäller även för 32-bitarsversionen i Ubuntu Natty //David Nyström 2011-05-26
Funkar fin-fint på Ubuntu 13.10 om man använder SEBs kortläsare (med handelsbankens kort...) //Christian 2014-04-25

Installation Arch Linux

Komplett installation inklusive Handelsbankens kortläsare (32/64-bit). OBS! Fungerar inte för nyare kort.

 # Installera opensc och pcsclite:
 sudo pacman -S opensc pcsclite
 # Bygg fler paket från AUR:
 aurget -S libp11 fribid-stable
 # Installera handelsbankens kortläsare från AUR:
 aurget -S pcsc-handelsbanken-bin
 # Ändra config:
 sudo sed -i "s/# lock_login = true/lock_login = true/" /etc/opensc.conf
 sudo sed -i "s/# use_file_caching = true/use_file_caching = true/" /etc/opensc.conf
 # Starta
 sudo systemctl enable pcscd.service
 # (ifall vi uppdaterade behöver den startas om)
 sudo systemctl stop pcscd.socket
 sudo systemctl stop pcscd.service
 sudo systemctl start pcscd.socket
 sudo systemctl start pcscd.service
 # (Plugga in kortläsaren, tre rutor ska visas och sedan försvinna)
 # Läs in kortläsaren i cache för att snabba upp inloggningen
 pkcs15-tool -L

Problem? Se den här tråden: http://forum.fribid.se/viewtopic.php?id=78

Installation på andra operativsystem

Installera pcsc-lite, opensc och libp11 med din pakethanterare

Ladda hem .tar.gz ompacketeringen av drivrutinen från alternativa länken ovan.

Leta reda på var drivrutiner för pcsc skall ligga på ditt system. Vanligen /usr/lib64/pcsc/drivers/ eller /usr/lib/pcsc/drivers/

Packa upp drivrutinen till rätt plats

 $ tar -C /usr/lib64/pcsc/drivers zxvf shbecrDeb.bundle-1.0.2-64bit.tar.gz

Efter installation

Starta om smartkortsservern för att läsa in de nya filerna

 $ sudo /etc/init.d/pcscd restart

På grund av att standardinställningarna i opensc inte är optimala för BankID så måste vi ändra opensc.conf en del

$ sudo vi /etc/opensc/opensc.conf

Leta rätt på raderna

 # enable_pinpad = true;
 # use_file_caching = true;
alternativt för opensc 0.11.x
 # use_caching = true;
 # lock_login = true;

och ta bort # i början av raderna och spara. Eller kör:

 sed -ibak "s/# enable_pinpad = true/enable_pinpad = true/" /etc/opensc/opensc.conf
 sed -ibak1 "s/# lock_login = true/lock_login = true/" /etc/opensc/opensc.conf
 sed -ibak2 "s/# use_cacheing = true/use_cacheing = true/" /etc/opensc/opensc.conf
 sed -ibak3 "s/# use_file_caching = true/use_file_caching = true/" /etc/opensc/opensc.conf

Lär sedan datorn ditt kort så att det går MYCKET fortare att visa inloggningsrutan. Koppla in dosa+kort, och skriv:

 $ pkcs15-tool -L

Cachen lagras läggs i ~/.eid/

Kompilera sedan FriBID med smartcard stöd (./configure --enable-pkcs11).

 wget http://fribid.se/releases/source/fribid-1.0.0.tar.bz2
 tar jxvf fribid-1.0.0.tar.bz2
 cd fribid-1.0.0
 ./configure --enable-pkcs11
 make
 sudo make install

Installerar du färdigkompilerad version av FriBID så är stöd för pkcs11 påslaget.

Kvar att implementera

För er som vill bidra med kodning i projektet så finns här lite idéer om saker som är kvar att förbättra i kortstödet

* Automatiskt lära sig ett kort (eller?)
* Inte läcka så mycket minne och bättre struktur på kod
* Hotplug av smartcard läsare/kort (då räcker inte libp11) (libp11 borde räcka men behöver scanna om korten / hno)
* Dialog som visar vad som händer ("Skannar kort...")
* Byta pin
* Om fel kod - visa antal försök kvar, eller att lösenordet är låst
* Låsa upp med PUK kod
* Rätt applikationssträng så att rätt kortläsare visas på install.bankid.com

Som referens kan man titta på dokumentationen för officiella versionen Lathund för BankID säkerhetsprogram_Linux.pdf

För att få events från kort så titta på det här exemplet http://pcsclite.alioth.debian.org/api/formaticc_8c_source.html

PKCS#12 to smartcard

Guiden nedan beskriver hur man kan göra för att importera de privata nycklarna och certifikaten från FriBID till ett eget smartkort med SafeSign. Andra kort kan förstås användas och då använder man istället dess PKCS#11 module (t.ex. opensc).

The format of the PKCS#12 file produced by FriBID is not compatible with Java which I will be using to import the keys and certificates to the smart card so we will first have to create a new PKCS#12 using OpenSSL.

Notice: Fribid expects different slots for the auth and sign key-pairs/certificates so a patch is required for the below setup with both certificates in the same slot.


1. Use OpenSSL to "import" the PKCS#12 file

 $ openssl pkcs12 -nomacver -in "(110327 13.37) MY NAME - BankID på fil.p12" -out myname-bankid-auth.pem

2. Make a copy of myname-bankid-sign.pem

 $ cp myname-bankid-auth.pem myname-bankid-sign.pem

3. Open and edit myname-bankid-auth.pem so that it only contains the first private key and the authentication certificate and the CA certificates

 $ nano myname-bankid-auth.pem

4. Open and edit myname-bankid-sign.pem so that it only contains the second private key and the signature certificate and the CA certificates

 $ nano myname-bankid-sign.pem

5. Use OpenSSL to "export" them to new PKCS#12 files

 $ openssl pkcs12 -export -in myname-bankid-auth.pem -out myname-bankid-auth.p12 -name "myname-bankid-auth"
 $ openssl pkcs12 -export -in myname-bankid-sign.pem -out myname-bankid-sign.p12 -name "myname-bankid-sign"

3. Create a SunPkcs11 config file pointing out the PKCS#11 module. For SafeSign the following works:

 name=SafeSign
 library=/usr/lib/libaetpkss.so
 slotListIndex = 0

4. Use Java Keytool to import the keystores to the card

 $ keytool -importkeystore -srckeystore myname-bankid-auth.p12 -srcstoretype pkcs12 -destkeystore NONE -deststoretype PKCS11 -providerClass   sun.security.pkcs11.SunPKCS11 -providerArg sunp11-safesign.conf
 $ keytool -importkeystore -srckeystore myname-bankid-sign.p12 -srcstoretype pkcs12 -destkeystore NONE -deststoretype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg sunp11-safesign.conf

5. Use Java Keytool to see that both entris are available and with the certificate chains

 $ keytool -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg sunp11-safesign.conf -list -v

6. Configure FriBid to use the SafeSign PKCS#11 module by adding the following to ~/.config/fribid/config.

 [pkcs11]
 module=/usr/lib/libaetpkss.so