SmartCards
Denna sida kan bara redigeras av inloggade användare pga upprepad länkspam,
Introduktion
För Smartcard-stöd behöver du följande:
- FriBID 0.2.0 eller senare
- opensc - open smart card: http://www.opensc-project.org/opensc
- libp11 (eller libp11-2) - http://www.opensc-project.org/libp11
- pcsc - pcsclite: http://pcsclite.alioth.debian.org/pcsclite.html
- Drivrutin för Handelsbankens smartcard läsare
- Alternativt annan smartcard läsare som fungerar bättre under Linux
Drivrutinen för Handelsbankens kortläsare hittar du på:
- 32-bitarsversion Ubuntu/Debian: https://www.handelsbanken.se/komigang
- 64-bitarsversion: Alternativ plats: http://www.henriknordstrom.net/code/SHB/SHB_Deb_1.0.2_64bit.deb
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