Sähköinen henkilökortti selaimessa ja Linux

Ismo Aulaskari 28.1.2007 (viimeisin päivitys 28.7.2008)

Väestörekisterikeskuksen kortti (Organisaatiovarmenne) toimii Linuxissa. Tätä olen testannut Omnikey 3121-usb-kortinlukijan ja Organisaatiokortti 2003:n kanssa 32-bittisen Ubuntu Linux 6.06:ssa selaimena Firefox 1.5.0.5 ja sittemmin 28.11.2007 64-bittisen Ubuntu 7.10:n ja Firefox 2.0.0.10:n kanssa ja 28.7.2008 Ubuntu 8.04:n ja Firefox 3.0.0:n kanssa. Samaa voi sanoa myös yleissuomalaisesti tutummasta poliisin myöntämästä sähköisestä henkilökortista, josta käytetään nimeä kansalaisvarmenne tai HST-kortti tms. ja joka näyttää poliisin henkilökortilta johon on pultattu siru. Kansalaisvarmenne on se hyvä idea joka on kuolemassa Suomesta vaivihkaa pois, jos sitä ei aleta jaella usb-tikkumuodossa.

Tarvitsin itse kortinlukua varten Ubuntu-paketit opensc ja mozilla-opensc ja kortinlukijaan pcscd-paketin. Nämä tarvitsivat joukon kirjasto-riippuvuuksia, jotka paketinhallinta hoiteli. Käytin myös valinnaista pcsc-tools -paketin työkaluja opensc-työkalujen lisäksi testailuun. Omnikeyn sivuilta löytyi myös Linux-ajuri mutta sitä ei tarvittu. Pcscd-middlewarelle on myös vaihtoehto nimeltä openct, joka tukee myös joukkoa kortinlukijoita. HUOM: Vanhasta Debianista 3.1 löytyi periaatteessa samannimiset osat lähes identtisellä prosessilla, mutta fineid.fi:n testisivua en sillä helpolla saanut toimimaan.

Selaintukea varten Firefoxin valikosta Edit-Preferences valitaan Advanced->(Certificates)->Security_Devices->Load
Lisätään /usr/lib/opensc-pkcs11.so
Uudemmassa Ubuntussa huomasin olevan myös modullin /usr/lib/onepin-opensc-pkcs11.so jota vaihtoehtoisesti käyttämällä ei tarvitse korttia käyttäessä antaa turhaan tunnistusoperaatioissa allekirjoitus-pin-koodia (joskaan tämä ei saanut pankkini Active-X-allekirjoitustoimintoja edelleenkään toimimaan). Kyseisen moduulin nimeksi laitoin OpenSC Module. Muita mielenkiintoisia käyttötapoja OpenSC:lle löytyy PAM-moduulina ja osana OpenSSL:ää.

Windows-käyttäjille Omnikey-lukijan Windows-ajurit saa www.omnikey.com:ista (onnistunee kyllä XP:n tarjoamilla) ja tämän jälkeen voi asentaa Setweb-Windows-ohjelman fineid.fi-sivustolta(se lisää kortinlukumoduulit löytämiinsä selaimiin).

Testatut palvelut

Mennessä fineid.fi-testisivulle Firefox kysyy minulta nyt ensin allekirjoitustunnuslukua (PIN2) ja sitten perustunnuslukua (PIN1). Testisivu näyttää tämän jälkeen tietoni kortilta, ainoastaan sähköinen allekirjoitus ei jostain syystä toimi vaan painettaessa submittia asp-sovellus jää limboon ja selain pitää tappaa.

Vetuma-testisivun (testitunnistus.suomi.fi) korttiautentikointi aiheuttaa Organisaatiokortilla "Järjestelmävirhe 3010":n ilmeisesti koska vrk-kortti ei ole HST-kortti. Olen nyt testannut tätä uudella HST-kortillani ja sillä Vetuma toimii. Myös HST-kortin vanhempi versio on Opensc:n sivujen mukaan testatusti Opensc:n kanssa toimiva. Suosittelisin Vetuma-palvelulle kyllä lämpimästi Organisaatiovarmeenteen tukemista tulevissa versioissa, sillä käsittääkseni aika monella virkamiehellä pian sellainen on.

Osuuspankin verkkopankki (op.fi) oli itselleni mielenkiintoinen palvelu jota oli pakko kokeilla HST-kortilla. Kortin rekisteröiminen palveluun ei kuitenkaan toiminut Linuxilla ja Firefoxilla, eikä edes Windows XP/Firefox/Setweb-1.55-yhdistelmällä. Viisivaiheinen rekisteröityminen kaatui aina viidenteen vaiheeseen, vaikka kortti oli jo onnistuneesti hoitanut autentikointipuolen. Syylliseksi paljastui kokeilun jälkeen viidennessä vaiheessa sähköinen allekirjoittaminen, joka käytti Active-X-komponenttia. Hoidin tämän rekisteröitymisen sitten Windows XP/Internet Explorer 6/Setweb-yhdistelmällä, jossa allekirjoitus toimi toisella yrityksellä. Onnistuneen rekisteröinnin jälkeen op:n verkkopankin käyttö toimi noilla muillakin kokeilemillani yhdistelmillä, eli ainoastaan tuo rekisteröitymisen loppuosa oli onnistuttu tekemään alustariippuvaiseksi. Linux+Firefox-yhdistelmä tosin pienenä kauneusvirheenä kysyy sekä allekirjoitustunnuslukua että perustunnuslukua ja jo heti op.fi-sivulle saapuessa, mutta itse asia eli laskujen maksu toimii mainiosti (onepin-opensc-ajurin käyttö korjaa tämän). Voin siis jatkossa jättää huoletta kertakäyttötunnuslappuset ja numerosarja-käyttäjätunnuksen kotiin.

Apache-hakemiston suojaus älykortilla

Apache-http-palvelin tukee asiakkaan autentikointia selaimen tarjoamalla sertifikaatilla ja tässä kelpaa myös älykortilta luettu. Suojaus on helppo asettaa, joskin selaimet eivät vielä (ainakaan käyttämilläni asetuksilla) osaa antaa järkeviä virheilmoituksia tilanteissa joissa käyttäjällä ei ole kortti sisällä lukijassa. Windows-puolella SetWeb korjaa tämän puutteen.

#Väestörekisterikeskuksen CA-sertifikaatti der-muodosta pem-muotoon:
openssl x509 -in vrkrootc.crt -inform DER -outform PEM -out vrkrootc.pem

#Nämä rivit Apachen konffiin sopivaan kohtaan:
        SSLRequireSSL
        SSLVerifyClient require
        SSLVerifyDepth 2
        SSLCACertificateFile /home/forum/kortti/vrkrootc.pem

        #Tällä voi sallia esim. kansalaisvarmenteet ja jättää muut vrk:n varmeenteet ulkopuolelle
        SSLRequire %{SSL_CLIENT_I_DN_OU} eq "Valtion kansalaisvarmenteet"

Muuta

opensc-ja fineid-korttiyhdistelmilla Mozilla-pohjaisissa selaimissa tuntuu olevan ongelmia sähköisissä allekirjoitusoperaatioissa. Aika usein johtuen siitä että sivut toteuttavat sen Internet Explorer-riippuvaisilla tekniikoilla.

Linkit:

Fineid.fi (VRK:n juurivarmenne ja testipalvelu)
OpenSC-projekti
Debian ja älykortit
The OpenVPN Smartcard HOWTO
libchipcard, uusi yrittäjä sirukorttiajuriksi