2012-10-29

BankID Säkerhetsprogram, BISP, i 32- och 64-bitars Fedora 17

This post is about BankID Säkerhetsprogram which is a Swedish digital signing and identification program used by many banks and other institutions. The post is written i Swedish.

BankID

BankID finns officiellt för Linux eller snarare specifikt för Ubuntu 10.10. BankID tillhandahålls av företaget Finansiell ID-Teknik BID AB men tekniken bakom kommer från företaget Technology Nexus AB och mer specifikt deras produkt Nexus Personal Security Client.

Av någon anledning vill man inte stödja 64-bitars Linux trots att det faktiskt är ganska enkelt att använda mycket av 32-bitars BankID under 64-bitars Linux.

BankID kan lagra certifikat som används för identifiering och underskrifter antingen "mjukt" i form av lösenordsskyddad fil på disk eller på ett smartcard. Beroende på vilken bank eller annan utfärdare av ett BankID man har så används antingen mjukt certifikat eller kort. I mitt fall så är det mjukt certifikat som gäller, så hur BankID med kort fungerar under Fedora 17 återstår att undersöka.

Så, för att vara övertydlig, det här inlägget handlar om hur man får BankID med mjuka certifikat att fungera under 32- och 64-bitars Fedora 17.

BankID verkar även kunna användas för att komma åt certifikat som skall användas för att etablera säker kommunikation via HTTPS och autentisering via Firefox egna certifikathantering. Jag har ingen aning om det här är någon som används. För "vanliga" bankärenden så används det inte i de fall jag behöver använda BankID. Det finns dock en sektion om PKCS#11 nedan för dem som är intresserad.


Hämta hem BISP

Om man surfar till bankid:s hemsida från 64-bitars Fedora så får man veta att ens operativsystem inte stöds. Man får klicka lite för att komma till nedladdningssidan för att kunna få hem BISP. Direktlänk för nedladdning är här: https://install.bankid.com/Download/All. Klicka på "Linux/Ubuntu"-knappen för att ladda hem BISP.


Installera BISP, steg ett

Packa först upp filen som du tankade hem och gå ner i den uppackade katalogen (observera att filnamnen kommer vara andra för senare versioner av BISP):
 $ tar xvzf BISP-4.19.1.11663.tar.gz
 $ cd BISP-4.19.1.11663
Kör nu installationsprogramet antingen som root eller via sudo beroende på hur du satt upp din dator:
 $ sudo ./install.4.19.1.11663.sh i
Installationsscriptet kommer fallera på slutet när det försöker installera pluginen till Firefox i en katalog som inte finns i Fedora. Installera i stället pluginen manuellt enligt följande:
 $ sudo cp libplugins.so /usr/lib/mozilla/plugins/.
Det du nu fått installerat är ett antal "libbar" och binärer i /usr/local/lib/personal, två libbar i /usr/local/lib, en plugin i /usr/lib/mozilla/plugins och två script, persadm och personal i /usr/local/bin. Installationsscriptet har även lagt in sökvägen /usr/local/lib i /etc/ld.so.conf och lagt till desktop-filen /usr/share/applications/personal.desktop som gör att programmet personal kan nås från menyn i Gnome och KDE.

Programmet persadm använder man för att lista sina certifikat samt för att exportera och importera dem mellan datorer. personal är själva programmet som hanterar dina certifikat och som är GUI:t som visar dialoger av typen "skriva under" mm.

Installationen är nu klar enligt vad som behövs "officiellt". Nu är det dags att installera det extra som behövs för att BISP skall fungera i Fedora.


Installera BISP, steg två (om du kör 32-bitars Fedora)

Det mesta som behövs för att köra de installerade programmen ovan brukar vara installerat. Det som kan saknas är följande:
  • libpng-compat
  • oxygen-gtk2 (om man kör KDE med Oxygen-temat)
som enkelt installeras såhär:
 $ sudo yum install libpng-compat oxygen-gtk2
Om övriga libbar saknas så finns en mer komplett lista på beroenden i 64-bitarsdelen nedan.


Installera BISP, steg två (om du kör 64-bitars Fedora)

Det du har fått installerat enligt stegen ovan är allt kompilerat för för 32-bitar. Det går alldeles utmärkt att köra 32-bitars program under 64-bitars Linux bara man installerar de 32-bitars paket som behövs.

För persadm behöver man följande paket:
  • glibc.i686
  • zlib.i686
  • libstdc++.i686
  • libidn.i686
  • libgcrypt.i686
och för personal behöver man dessutom:
  • libpng-compat.i686
  • glib2.i686
  • expat.i686
  • atk.i686
  • libX11.i686
  • libSM.i686
  • libXinerama.i686
  • gtk2.i686
  • oxygen-gtk2.i686 (om man kör KDE med Oxygen-temat)
allt det här installerar man snabbt och enkelt genom följande rad:
 $ sudo yum install glibc.i686 zlib.i686 libstdc++.i686 libidn.i686 \
   libgcrypt.i686 libpng-compat.i686 glib2.i686 expat.i686 atk.i686 \
   libX11.i686 libSM.i686 libXinerama.i686 gtk2.i686 oxygen-gtk2.i686
Vissa andra paket kommer också att installeras genom beroenden och det är helt ok. Firefoxpluginen, libplugins.so, har också beroenden till 32-bitars paket men i och med att man installerat det som behövs för persadm och personal ovan så är också libplugins.so nöjd.

För att kunna köra 32-bitars pluginer till Firefox under 64-bitar behöver man vidare paketet nspluginwrapper. Det här paketet erbjuder en 32-bitars miljö till 32-bitars pluginer som man vill använda i 64-bitars Firefox.

Man behöver installera både 32- och 64-bitarsvarianten av nspluginwrapper för att få funktionen att köra 32-bitars pluginer. Installera nspluginwrapper genom att köra följande:
 $ sudo yum install nspluginwrapper.i686 nspluginwrapper.x86_64
Beroende på vad du har installerat på datorn tidigare kan det tänkas att några beroenden också kommer installeras. Detta är helt ok.

BankID är nu klart att användas men det är några saker som man måste vara medveten om för att man inte skall hamna i problem. Allt detta tas upp nedan.


Starta blankt

BankID har lagrat certifikaten på olika stället genom åren. För äldre versioner av BankID så lagrades de i en katalog som hette ~/cbt men nu för tiden så lagras allt som har med BankID att göra under katalogen ~/.personal. Katalogen skapas första gången man startar personal.

Det kan eventuellt finnas problem med att ta med sig certifikat från det gamla sättet att lagra dem till det nya, så för att inte hamna i eventuella problem så blir rekommendationen att börja blankt och ta hem ett nytt BankID från din bank/utfärdare i stället för att försöka importera ett gammalt från andra datorer eller tidigare BankID-installationer.


Använda BISP under Fedora (både 32- och 64-bitars)

Den normala gången när man surfar till en sida som använder sig av BankID är att BankID-pluginen i Firefox aktiveras och kontrollerar om programmet personal är igång eller inte (genom att gissningsvis titta om det finns en unix-socket som heter ~/.personal/.wxsrv424 eller om pid-filen för personal, ~/.personal-<ditt_användarnamn> finns). Om pluginen bedömmer att programmet inte körs så försöker den starta personal.

Det här kommer normalt att fallera under Fedora eftersom SELinux-policyn för Firefox hindrar att allt för mycket kan ske som kan vara potentiellt farligt (som att tex starta godtyckliga program som skapar filer).

Det här kan man dock komma runt ganska enkelt och det är att starta personal först, innan man surfar till någon sida som kräver BankID. Du startar enklast personal genom att söka efter "bankid" i sökdialogen under startmenyn, eller direkt från kommandoraden:
 $ personal
Med personal igång så finns nu både pid-filen och unix-socket:en när libplugins.so laddas och allt fungerar som det skall. Det går att hämta certifikat, logga in på olika platser som kräver BankID och att signera olika saker.

En till sak man skall tänka på med BankID är att när du tex ombeds signera något genom att ange lösenordet till ditt certifikat så anser Firefox att scriptet på websidan "hänger" eftersom det väntar på svar från personal.

Om man väntar för länge kommer alltså Firefox att tycka att scriptet på sidan har hängt och en varningsdialog dyker upp där man får frågan om man vill avbryta exekveringen eller om man vill fortsätta. Normalt borde man bara behöva säga åt Firefox att fortsätta köra scriptet, men av någon anledning så är det så att säga "kört" när det här dialogen kommer upp och många gånger får man helt enkelt starta om Firefox för att kunna fortsätta använda BankID.

Rekommendationen från BankID:s support är att ställa upp den tillåtna tiden för hängande script. Ta upp en tom flik i Firefox och skriv about:config. Leta sedan upp dom.max_script_run_time och sätt den till ett värde > 80 eller hur många sekunder man nu tycker sig behöva för att skriva under saker.


PKCS#11 modulen

Precis som libplugins.so är en plugin som gör att webbsidor kan nå dina certifikat via JavaScript och personal, så är libP11.so som installeras i /usr/local/lib/personal en PKCS#11 plugin som gör att BankID certifikaten dyker upp i Firefox normala certifikathantering.

Installera libP11.so i Firefox genom att att ta upp dialogen för hantering av säkerhetstoken:  Edit -> Preferences -> Advanced -> Encryption -> Security Devices. Välj sedan Load, ange ett valfritt namn på "modulen", tex "BankID PKSC#11", och ange sedan sökvägen till modulen, dvs: /usr/local/lib/personal/libP11.so. Klicka sedan på Ok och stäng dialogen.

Nu kan man klicka på knappen "View Certificates" och sedan välja fliken "Your Certificates" för att se sina BankID certifikat. Det har även dykt upp två CA-cert under fliken "Authorities".

Den här modulen fungerar inte alls i 64-bitars Firefox, inte ens nspluginwrapper erbjuder någon hjälp här.

Men som nämndes i början av inlägget så är det okänt för mig om/när det här används. Vi får se det som kuriosa så länge. Det svenska Ubuntuwikin skriver lite om det här: http://ubuntu-se.org/wiki/NexusPersonal.


Mer SELinux

Det finns för närvarande en bugg i SELinux-policyn som rör nspluginwrapper. Den här buggen gör att man alltid får ett SELinux felmeddelande när man startar Firefox när nspluginwrapper är installerad. Det här är irriterande men nspluginwrapper verkar fungera som den skall.

Buggen är rapporterad här: https://bugzilla.redhat.com/show_bug.cgi?id=865328 och även åtgärdad i nästkommande bugfix för policyn. Uppdateringen lär dyka upp i närtid.

Ovanstående problem är numera åtgärdat.


Referenser


8 comments:

  1. Tack ska du ha för instruktionerna. Jag installerade BankID som vanligt, orkar inte bygga en .rpm fil nu. Men gör det kanske senare. Nu kommer jag in på FK.se och det är det viktigaste. Tack igen

    ReplyDelete
  2. Det där var ju eländigt bökigt, men tusen tack för att du hade en lathund som visade hur man gjorde.

    Så, hur får man nu själva certen? Kan du hjälpa med det också?

    ReplyDelete
  3. Andreas, för lite enklare installation kan du bygga en RPM härifrån: https://github.com/johanhedin/bisp

    Stegen är ungefär såhär:
    $ git clone https://github.com/johanhedin/bisp
    $ cd bisp
    $ make
    $ sudo yum install RPMS/i686/bisp-4.19.1.11663-1.fc17.i686.rpm

    Vad gäller certifikat så skall du kunna ladda ner dem via din banks hemsida. Det är i alla fall så jag gjort. Det var dock ett tag sedan eftersom allt har fungerat bra för mig ett bra tag nu.

    Jag har dock märkt att SELinux policyn för pluginer till Firefox har ändrats i Fedora 17 och uppåt så jag måste sätta selinux i "permissive" för närvarande för att BankID skall fungera.

    Plannerar att undersöka hur man löser det framöver.

    ReplyDelete
  4. Instruktionen fungerar i princip för Manjaro Linux också. Det som är annorluda är förstås hur de paket som krävs installeras eftersom det är en annan pakethanterare. Följande behövde jag köra:

    sudo pacman -S lib32-libidn lib32-gtk2 lib32-libpng12 nspluginwrapper

    I Fedora körs tydligen nspluginwrapper automatiskt. Så verkar inte vara fallet i Manjaro Linux utan man måste köra följande kommando för att browsern skall hitta pluginen:

    sudo nspluginwrapper -i /usr/lib/mozilla/plugins/libplugins.so

    Nu är det bara att starta om browsern så skall det fungera!

    ReplyDelete
  5. BankId med VASCO DIGIPASS 920 - installationsanvisningar för Fedora 20, 64-bitars.
    Denna instruktion fungerar med VISA med BankId och SEB:s kortläsare( 2014-03-22)

    0. Hämta hem programmet BISP-4.19.1.11663.tar.gz via din banks hemsida.
    a) Packa upp filen med Ark eller annnat uppackningsprogram.
    b) Gå in i den uppackade mappen BISP... via konsolen och kör: su -c 'install.4.19.1.11663.sh i'
    Skriptet kommer att klaga på att det inte gick att länka en fil libplugins.so men för övrigt ska det gått bra.
    Länka denna fil genom att skriva in: ln -s /usr/local/lib/personal/libplugins.so ~/.mozilla/plugins

    1. Hämta hem 32-bitars Firefox från Mozillas hemsida - obs välj 32-bitars webläsare även om du kör 64-bitars Fedora.
    a) Packa upp filen firefox-28.0.tar.bz2 med Ark eller annat uppackningsprogram.

    2. Installera dessa program för drivrutiner till smartcard-läsaren VASCO DIGIPASS 920: su -c 'yum install pcsc-lite pcsc-lite-ccid'

    3. Installera dessa program - de behövs av BankId:s program: su -c 'yum install libidn.i686 libpng12.i686'

    4. Installera dessa program - de behövs av Firefox: su -c 'yum install dbus-glib.i686 gtk2.i686 libXt.i686'

    5. Starta Firefox genom att gå in i mappen, där du packade upp det, via konsolen och skriv ./firefox.
    Obs! Stäng ner andra Firefox-program innan denna version av Firefox körs - annars kanske det inte fungerar.

    6. Skriv in about:config i webläsarens adressfält.
    a) Denna inställning gör att servrar som Firefox är i kontakt med uppfattar denna läsare som äkta 32-bitars.
    Görs inte denna inställning kommer BankId:s hemsida att uppfatta webläsaren som 64-bitars pga att
    det står något om 64-bitar i useragent-strängen - se http://whatsmyuseragent.com/ innan du fortsätter på
    denna punkt - om du vill se useragent-strängen innan ändringen . BankId:s hemsida kommer antagligen att vägra fungera riktigt om denna punkt inte utförs.
    b) Högerklicka och välj New->string.
    c) Preference name: general.useragent.override
    d) Enter string value: Mozilla/5.0 (X11; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0
    (Denna inställning påverkar även redan installerad Firefox 64-bitars. För att återgå till
    originalinställningarna, markera general.useragent.override och högerklicka->Reset. Nästa gång
    Firefox startas försvinner general.useragent.override.)

    7. Koppla in smartcard-läsaren och sätt sedan i kortet med BankId på.

    8. Nu ska det fungera att logga in på din banks hemsida med BankId - bara att följa instruktionerna på skärmen.

    /Henrik

    ReplyDelete
    Replies
    1. Henrik, på Fedora 17 64-bit (som jag fortfarande kör...) så fungerar SEB med kort och samma läsare som du har rakt av med den installation som jag beskriver utan att behöva installera 32-bitars Firefox.

      Det som inte verkar gå så bra längre är att "verifiera" att ens webläsare har BankID korrekt installerat via BankID:s hemsida.

      Jag har också testat på Fedora 19 64-bitars och där fungerar i alla fall Skandiabankens mjuka certifikat på samma sätt som i Fedora 17 (vissa SELinux-aspekter kvar att lösa dock).

      Har inte haft möjlighet att prova med SEB:s kortläsare dock eftersom min Fedora 19 är en virtuell maskin.

      Hur som helst, själv har jag slutat strula med binära plugginer under Linux och kör numera mobilt BankID över allt. Vad som inte verkar vara helt känt är att du kan använda mobilt BankID även när du loggar in på din bank från Firefox på en Linux-desktop. Förutsättningen är förstås att du först installerat BankID-appen i din telefon och att du sedan skaffat ett certifikat till den.

      Vidare, så vitt jag kunnat läsa mig till kommer BankID sluta med den här struliga pluginen till webläsaren och låta det hela bli ett "vanligt" program som inte behöver prata med webläasaren. En första effekt av det här är att mobilt BankID fungerar lika bra på en vanligt desktop som i mobilen.

      / Johan

      Delete

PrettyPrint