DanID har langt om længe lanceret NemID på Hardware, hvilket betyder at man nu kan få sin hemmelige nøgle på et smartcard i stedet for at have den liggende på DanID’s servere. Det skulle prøves, så jeg bestilte det eneste hardware de understøtter, nemlig en Gemalto IDPrime .Net som faktisk er to enheder: En USB smartcardlæser og et smartcard der fastmonteres i den.
Jeg bruger også Windows på nogle computere, og aktiverede faktisk kortet under Windows jfr. DanID’s vejledning, men tænkte at det kunne være interessant også at få det til at virke under Linux. Denne vejledning til hvordan man får NemID på Hardware til at virke under Linux, er baseret på min favoritdistribution Arch Linux (64-bit), men det burde være forholdsvis trivielt at modificere den til at virke på en vilkårlig Linux distribution. Den er baseret på den officielle vejledning fra DanID.
- Installer først den nødvendige software for at snakke med smartcards og et library der skal bruges til at kompilere driveren i skridt 3:
sudo pacman -S pcsclite pcsc-tools pcsc-perl ccid boost boost-libs
- Hent PKCS#12 driveren til smartcardlæseren. Gemalto siger at man kan skrive til dem for at få koden udleveret, men DanID har den også liggende på deres side.
- Pak koden ud, konfigurer dit build og byg driveren (hvis du får en fejl ved kompilering et sted i boost, så check dette commit):
tar xfz libgtop11dotnet_2.2.0.12.tar.gz cd libgtop11dotnet-2.2.0.12 ./configure --enable-system-boost --disable-static make -j2
- Installer driveren i /usr/local/lib/pkcs11:
sudo mkdir -p /usr/local/lib/pkcs11 cd .libs sudo cp -P libgtop11dotnet* /usr/local/lib/pkcs11 sudo strip /usr/local/lib/pkcs11/libgtop11dotnet.so.0.0.0
- Sørg for at systemet kan finde driveren:
echo "echo /usr/local/lib/pkcs11 | tee /etc/ld.so.conf.d/gemalto.conf" | sudo bash sudo ldconfig -v
- Start pcscd og sæt den til at starte ved hver opstart af systemet:
sudo systemctl enable pcscd.socket sudo systemctl stop pcscd.socket sudo systemctl start pcscd.socket
- Indsæt din USB token og check om den virker med følgende kommando:
pcsc_scan
Det var det. Tilbage er blot at prøve at logge på med din nye digitale signatur. Prøv fx på Sundhed.dk eller på Borger.dk, eller prøv at aktivere den hvis du endnu ikke har gjort det.
Bemærk at nogle udbydere benytter NemLog-In, mens andre benytter NemAdgang. Under NemAdgang skal du vælge at logge på med digital signatur, mens du under NemLog-In skal vælge at logge ind med nøglefil.
Da jeg i sin tid installerede efter denne vejledning virkede det.
Det er imidtertid holdt op med at virke.
Når jeg genstarter pcscd kommer følgende i loggen:
pcscd[3376]: 00000000 utils.c:87:GetDaemonPid() Can’t open /run/pcscd/pcscd.pid: No such file or directory
pcscd[3376]: 00124118 commands.c:966:CmdEscape error on byte 10
På trods af det virker pcsc_scan som det skal, men NemID appletten finder ingen certifikat
Vejledningen er blevet opdateret lidt. Især er der ændret på hvordan pcscd startes, og der er også tilføjet information om en patch der løser et kompileringsproblem der p.t. eksisterer med den boost version der inkluderes med Arch Linux.
Din fejl i loggen er iøvrigt ganske normal. Du prøver at stoppe tjenesten, men den er stoppet af sig selv (det sker efter 60 sekunders inaktivitet) og derfor findes pid filen ikke.
Mange tak, det virker fint nu igen, men det var nødvendigt at tilføje de to linier fra patchen, og man skal lige huske at de lange tankestreger i configure kommandoen skal laves om til -- (to minustegn).
Ja, det var WordPress der mente at de streger skulle laves om til noget andet. Det har jeg nu overtalt den til at lade være med.
Efter noget tid og en stak updates virker det ikke mere.
Selvom pcscd.socket er startet uden fejl og pcsc_scan virker fint, så kommer der ved login forsøg en lille java boks, der siger: Could not initialize your hardware, try to restart your browser, hvilket selvfølgelig ikke hjælper. Og der kommer ikke noget lys i hardwaren overhovedet.
Kan der være sket nogle ændringer der gør at man skal forfra eller på anden måde?