Ero sivun ”HST” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
 
(237 välissä olevaa versiota 25 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
Väestörekisterikeskus tarjoaa Suomessa henkilön [http://www.vaestorekisterikeskus.fi/vrk/home.nsf/www/sahkoinenhenkilollisyys sähköisen tunnistamisen] (HST) ratkaisua sirullisella henkilökortilla. Kortin myöntää poliisi. Henkilökortilla on [[wikipedia:fi:PKI|julkisen avaimen menetelmään]] perustuva laatuvarmenne. Varmenteita on [http://www.fineid.fi/vrk/fineid/home.nsf/pages/4DC96862A6BFA292C2256FFF00379DE9 kansalaisille] ja myös [http://www.fineid.fi/vrk/fineid/home.nsf/pages/592117F7739364D5C2256FFF00386FA6 organisaatiovarmenne] yrityksille, yhteisöille sekä näiden henkilöstölle. Varmenteen avulla voi tunnistautua verkkopalveluihin, allekirjoittaa ja salata sähköpostia.
Väestörekisterikeskus tarjoaa Suomessa '''henkilön sähköisen tunnistamisen''' (''HST, eng FINEID'') ratkaisua sirullisella henkilökortilla. Kortin myöntää poliisi. Henkilökortilla on [[wikipedia:fi:PKI|julkisen avaimen menetelmään]] perustuva laatuvarmenne. Varmenteen avulla voi tunnistautua, allekirjoittaa ja salata dokumentteja ja viestiliikennettä.


Sähköinen henkilökortti toimii myös Linuxissa. Kortin käyttö edellyttää kortinlukijaa sekä asennettua kortinlukijaohjelmistoa. Ohjelmistoksi on olemassa kaksi vaihtoehtoa:
HST-kortin etuina on vahvan salauksen käyttö yhdistettynä vaatimukseen fyysisen esineen ("token") hallussapitoon. Toisin sanoen, niin kauan kuin esine (kortti) on hallussasi, kukaan ei pysty käyttämään väärin korttiin liittyvää sähköistä identiteettiä. Kortti on maksukortin kokoinen, helposti mukana pidettävä ja sen käyttö on suojattu PIN-koodilla. PIN-koodi on aina sama, riippumatta mihin palveluun kortilla tunnistaudutaan.
* Fujitsu Services Oy:n ''mPollux Digisign Client''
* ''OpenSC'' sekä siihen liittyvät middleware- ja ajuri-ohjelmistot


Väestörekisterikeskus tarjoaa maksutta Fujitsu Services Oy:n ''mPollux Digisign Client'' -kortinlukijaohjelmiston sähköistä kansalaisvarmennetta (esim. sähköinen henkilökortti) käyttäville. [http://www.fineid.fi/vrk/fineid/home.nsf/pages/CB47E5DD1C07BC25C2256FFF00393AFE Väestörekisterikeskuksen www-sivuilta] on mahdollista ladata ohjelmisto [[RHEL]]ille, [[Suse]]lle ja [[Ubuntu]]lle. Paketit toiminevat myös monissa niille sukua olevissa jakeluissa. mPollux Digisign Client -ohjelmistoa ei tiettävästi ole saatavilla minkään Linux-jakelun virallisesta paketinhallinnasta.
== Peruskäyttäjän tehtävälista ==


Vaihtoehtona mPollux-ohjelmistolle on olemassa vapaat [http://www.opensc-project.org/ OpenSC]- ja [http://www.opensc-project.org/openct/ OpenCT] sekä [http://pcsclite.alioth.debian.org/ PCSC-lite] -ohjelmistot. Nämä ohjelmat on saatavilla useimpien Linux-jakeluiden paketinhallinnasta. Joissakin Linux-jakelussa on älykorttien käsittely on integroitu toimivaksi kokonaisuudeksi, jossa jakelun tekijä on valinnut sopivan yhdistelmän ohjelmia, jotka konfiguroidaan valmiiksi asennuksen yhteydessä.
Vaikka sivulla on paljon asiaa, ei tämä oikeasti niin vaikeaa ole, lyhyesti:


==Yleistä HST-kortista==
# Hanki henkilökortti. Sitä voi anoa
#* paikalliselta poliisilta, toimitusaika kaksi vkoa.
#* [https://poliisi.fi/henkilokortti/henkilokortin_hakeminen Poliisin sähköisessä asiointipalvelussa] mikäli käytössä on pankkitunnukset tai mobiilivarmenne tai voimassaoleva henkilökortti. Vaatii valokuvaamolta saatavan kuvatunnuksen.
# Hanki kortin lukijalaite, tarkasta tuetut mallit ennen ostamista.
# Tutustu Linux-jakelukohtaisiin ohjeisiin mahdollisten lisäohjelmistojen asentamiseksi (lisätietoja alla).
# Tarvittaessa asenna vaaditut paketit ja konfiguroi ne (lähinnä vanhat lukijat).
# Käy tarvitsemasi sovellukset läpi ([[HST#Firefox_2|Firefox]] jne) ja konfiguroi ne.
# Testaa ja käytä. Testaamiseen voit käyttää  [http://fineid.fi/default.aspx?docid=2245&site=9&id=0 fineid.fi testisivua].


HST-kortti on yksi osa Väestörekisterikeskuksen PKI-järjestelmää. HST-kortin tarkoituksena on toimia henkilökorttina sähköisessä asioinnissa vastaavalla tavalla kuin kortti toimii perinteisenä henkilötodistuksena asioitaessa kasvokkain. Kortin toiminta perustuu ns. julkisen avaimen salausjärjestelmään: kortilla on tuotettu avainpari, joka koostuu julkisesta ja salaisesta avaimesta. Julkinen avain on sisällytetty varmenteeseen, joka avaimen lisäksi sisältää suppeat henkilötiedot: kortinhaltijan nimi ja sähköinen asiointitunnus. Varmenne on Väestörekisterikeskuksen digitaalisesti allekirjoittama.
'''Huom! Poliisilla käyvälle:''' Varmista kun anot korttia, että virkailija täyttää hakemukseen myös sähköpostiosoitteesi – oletuksena hän jättää tämän kentän tyhjäksi, jolloin sähköpostiosoitetta ei tule varmenteeseen. Osoite varmenteessa ei ole välttämätön kun korttia käytetään tunnistautumiseen, mutta siitä voi olla hyötyä sähköpostin salauksessa ja se kuuluu kortin hintaan.


Varmennetta ja salaista avainta voidaan verrata käyttäjätunnus/salasanapariin. Perinteisessä autentikoinnissa käyttäjä esittäytyy antamalla käyttäjätunnuksen ja todistaa olevansa käyttäjätunnuksen haltija esittämällä tunnusta vastaavan salasanan. Vastaavasti PKI-maailmassa henkilö esittytyy lähettämällä vastapuolelle varmenteensa, ja osoittaa olevansa varmenteen haltija todistamalla, että hänellä on hallussaan julkista avainta vastaava salainen avain. Mutta, päinvastoin kuin salasanan tapauksessa, salaisen avaimen hallussapito voidaan todistaa paljastamatta sitä kenellekään.
'''Huom! Verkosta haettaessa:''' Mikäli haluat henkilökorttiisi Kela-tiedot (viivakoodi taakse), pyydä sitä kun käyt allekirjoittamassa henkilökortin, verkkohakemuksesta puuttuu kohta sille, mutta allekirjoittaessa se voidaan lisätä. '''Huom!''' Henkilökorttilaki muuttui 1.1.2017. Samassa yhteydessä luovuttiin sairausvakuutustietojen merkitsemisestä henkilökorttiin.


Julkisen avaimen salausjärjestelmän voi toki toteuttaa ilman älykorttiakin, mutta tällöin usein ongelmaksi muodostuu salaisten avainten hallinta. PKI-älykortin varsinainen idea onkin, että se on rakennettu pitämään salaiset avaimet suojassa muistissaan ja laskemaan niillä ilman tarvetta lukea niitä kortilta. Itse asiassa HST-kortti ei edes salli salaisten avainten siirtoa kortin ulkopuolelle.
== Laitteet ==


==Laitteet ja ohjelmistot==
Korttia varten tarvitaan kortinlukija ja lukijaan sopiva ajuri. Lukijoita on pääasiassa kahta tyyppiä. Ulkoinen, tyypillisesti USB-väylään liitettävä lukija, sekä joissakin kannettavissa tietokoneissa oleva sisäinen lukija. Toiset esim kannettavan tietokoneen laajennuskorttipaikkaan sopivat lukijat näkyvät USB-väylässä ja toimivat sen mukaisesti. Hinnat vaihtelevat mallista ja ostopaikasta riippuen, nykyaikaisen USB-lukijan hinta vaihtelee kuuden ja 25 euron välillä.


Korttia varten tarvitaan kortinlukija ja lukijaan sopiva ajuri. Lukijoita on pääasiassa kahta tyyppiä, ulkoinen, tyypillisesti USB-väylään liitettävä lukija, sekä joissakin kannettavissa tietokoneissa oleva sisäinen lukija. Kun on hankkimassa ulkoista lukijaa, kannattaa valita ns. ''CCID'' (Circuit Card Interface Device) -speksin mukainen lukija. CCID on USB-väylän yhteyteen määritelty ns. Device Class -määrittely, joka määrittelee yhteisen protokollan eri valmistajien USB-lukijoille. Ennen CCID-määrittelyn valmistumista jokainen valmistaja käytti omaa protokollaa; näitä vanhempia lukijoita näkee vielä silloin tällöin. Esimerkkejä CCID-protokollan mukaisista lukijoista ovat:
<div style="margin-left: auto; margin-right: auto;">
* [http://www.hidglobal.com/omnikey/ Omnikey] 1021, 3021, 3121, ym.
[[Tiedosto:Cm 3021 190px.jpg]][[Tiedosto:CardMan4321 190px.jpg]]
</div>
 
Lukijalaitteita on myös omalla fyysisellä näppäimistöllä varustettuna jota käytetään pin-koodien syöttämiseen. Tällöin koodeja käsitellään ainoastaan lukijassa eivätkä ne siten altistu mahdollisille tietokoneen haittaohjelmille.
 
 
==== Nykyaikaiset lukijat ====
 
Kun on hankkimassa USB-lukijaa, kannattaa valita ns. ''CCID'' (Chip Card Interface Device) -speksin mukainen lukija. CCID on USB-väylän yhteyteen määritelty ns. Device Class -määrittely, joka määrittelee yhteisen protokollan eri valmistajien USB-lukijoille.  
 
Esimerkkejä CCID-protokollan mukaisista lukijoista ovat:
 
* [http://www.hidglobal.com/omnikey/ Omnikey] 1021, 3021, 3121, 4321 ym (4040 varauksella).
* [http://www.scmmicro.com/security/view_product_en.php?PID=4 SCM SCR 3310]
* [http://www.scmmicro.com/security/view_product_en.php?PID=4 SCM SCR 3310]
* Dellin tiettyjen USB-näppäimistömallien integroidut lukijat
* Dellin tiettyjen USB-näppäimistömallien integroidut lukijat


Sovellusohjelma tarvitsee ohjelmointirajapinnan (API) pystyäkseen keskustelemaan älykortin kanssa. RSA Laboratories on määritellyt C-ohjelmointirajapinnan niin sanotuille kryptograafisille tokeneille nimeltä ''[http://www.cryptsoft.com/pkcs11doc/v230/ PKCS#11]''. Se on 11. osa RSA Laboratoriesin sarjassa Public Key Cryptography Standards ja tunnetaan myös lempinimellä ''Cryptoki'' (väännös sanoista Cryptographic Token Interface). Cryptoki on tyypillisesti toteutettu ns. jaettuna kirjastona (.so-tiedosto). Useampi sovellus voi käyttää Cryptoki-rajapintaa rinnakkain; kirjaston tehtävänä on synkronoida pääsy yksittäiselle tokenille. Cryptoki pystyy myös hallitsemaan useampaa järjestelmään liitettyä tokenia. OpenSC-ohjelmisto sisältää Cryptoki-toteutuksen jaettuna kirjastona nimellä opensc-pkcs11.so.


PKCS#11-kirjaston ja lukijan välille tarvitaan vielä ns. middleware, josta on avoimena lähdekoodina kaksi vaihtoehtoista toteutusta: ''PCSC-lite'' ja ''OpenCT''. ''PC/SC'' (Personal Computer/Smart Card) on alunperin Microsoftilta tullut aloite, joka määrittelee yhtenäisen, laitteistosta riippumattoman, rajapinnan älykorteille. PC/SC:n ja Cryptokin erona on, että PC/SC määrittelee alemman tason rajapinnan älykorteille yleensä, kun taas Cryptoki määrittelee rajapinnan julkisen avaimen cryptotokeneille, jotka eivät välttämättä ole edes toteutettu älykortteina.
==== Vanhemmat lukijat ====


OpenCT on OpenSC:n kehittäjien kehittämä "liima" ylemmän tason Cryptoki-kirjaston ja laitteiston välillä. OpenCT on suoraviivaisempi vaihtoehto PC/SC:lle. Se pystyy käsittelemään lukijoita suoraan, kun taas PC/SC (PCSC-lite) tarvitsee erikseen vielä lukijalle ajurin. USB-lukijoilla käytetään ''CCID''-ajuria. Toisaalta OpenCT ei toteuta PC/SC-rajapintaa, joten sitä ei voi käyttää jos sovellus on kirjoitettu käyttämään PC/SC-rajapintaa.
Aikanaan valtaosa ensimmäisistä älykorttilukijoista oli RS-232 pohjaisia ja siten niiden käyttöönotto oli myös hieman työläämpää. Ensimmäiset USB-lukijat olivat myös RS-232 laitteita, niissä oli vain sisäinen USB-RS232 adapteripiiri (usein Prolific PL2303, pl2303 ajuri) joten laite lopulta näkyy yhtenä ttyUSB<n>-laitteena ajurinsa perusteella ja pitää siten ottaa käsin käyttöön.
 
Ennen USB-laitteiden CCID-määrittelyn valmistumista jokainen valmistaja käytti omaa protokollaa; näitä vanhempia lukijoita näkee vielä silloin tällöin.
 
* Towitoko ChipdDrive-micro 130 - USB-RS232 emulaatiolla oleva ihan toimiva lukija jos jakelu tukee.
* Towitoko ChipDrive Extern 330 - Sama sähköisesti kuin ChipDrive-micro.
 
 
Tietyt lukijalaitteiden brändit ovat vaihtuneet kun firmat ovat ostelleet toisiaan.
 
=== Towitoko ChipDrive ===
 
[[Tiedosto:Towitoko.chipdrive.JPG]]
 
Ei asennu automaattisesti, tehtävä seuraavat toimenpiteet käsin.
 
'''openct''':
 
Poista <code>/etc/openct.conf</code> tiedostosta kommentointi seuraavan lohkon osalta:
  #reader towitoko {
  #      driver = towitoko;
  #      device = serial:/dev/ttyS0;
  #};
 
Varmistu, että ''device'' osoittaa oikeaan laitteeseen. (esim ttyUSB0). Käynnistä openct palvelu uudelleen.
 
'''pcscd''':
 
?
 
== Ohjelmistot ==
 
===  Arkkitehtuuri ===
 
Sovellusohjelma tarvitsee ohjelmointirajapinnan (API) pystyäkseen keskustelemaan älykortin kanssa. RSA Laboratories on määritellyt C-ohjelmointirajapinnan niin sanotuille kryptograafisille tokeneille nimeltä ''[http://www.cryptsoft.com/pkcs11doc/v230/ PKCS#11]''. Se on 11. osa RSA Laboratoriesin sarjassa Public Key Cryptography Standards ja tunnetaan myös lempinimellä ''Cryptoki'' (väännös sanoista Cryptographic Token Interface). Cryptoki on tyypillisesti toteutettu ns. pluginina (.so-tiedosto). Useampi sovellus voi käyttää Cryptoki-rajapintaa rinnakkain; kirjaston tehtävänä on synkronoida pääsy yksittäiselle tokenille. Cryptoki pystyy myös hallitsemaan useampaa järjestelmään liitettyä tokenia. OpenSC-ohjelmisto sisältää Cryptoki-toteutuksen jaettuna kirjastona nimellä opensc-pkcs11.so.
 
PKCS#11-kirjaston ja lukijan välille tarvitaan vielä ns. middleware, josta on avoimena lähdekoodina kaksi vaihtoehtoista toteutusta: ''PCSC-lite'' tai ''OpenCT''.
 
'''PC/SC''' (Personal Computer/Smart Card) on alun perin Microsoftilta tullut aloite, joka määrittelee yhtenäisen, laitteistosta riippumattoman, rajapinnan älykorteille. PC/SC:n ja Cryptokin erona on, että PC/SC määrittelee alemman tason rajapinnan älykorteille yleensä, kun taas Cryptoki määrittelee rajapinnan julkisen avaimen cryptotokeneille, jotka eivät välttämättä ole edes toteutettu älykortteina.
 
'''OpenCT''' on OpenSC:n kehittäjien kehittämä "liima" ylemmän tason Cryptoki-kirjaston ja laitteiston välillä. OpenCT on suoraviivaisempi vaihtoehto PC/SC:lle. Se pystyy käsittelemään lukijoita suoraan, kun taas PC/SC (PCSC-lite) tarvitsee erikseen vielä lukijalle ajurin. USB-lukijoilla käytetään ''CCID''-ajuria. Toisaalta OpenCT ei toteuta PC/SC-rajapintaa, joten sitä ei voi käyttää jos sovellus on kirjoitettu käyttämään PC/SC-rajapintaa. Nykyään sen kehitys on pysähtynyt ja siten laitteisto- ja yhteisötuki on heikentynyt.


Alla on esitetty kaavioina yllä mainitut kaksi ohjelmistovaihtoehtoa:
Alla on esitetty kaavioina yllä mainitut kaksi ohjelmistovaihtoehtoa:
Rivi 35: Rivi 91:
[[Tiedosto:openct.png]]  &nbsp;&nbsp;&nbsp;&nbsp;  [[Tiedosto:pcsc-lite.png]]
[[Tiedosto:openct.png]]  &nbsp;&nbsp;&nbsp;&nbsp;  [[Tiedosto:pcsc-lite.png]]


==Ohjelmakohtaisia ohjeita==


===Firefox===
===Ajurit ja middleware===
 
Kortin käyttö edellyttää kortinlukijaa sekä asennettua kortinlukijaohjelmistoa. Ohjelmistoksi on olemassa kaksi rinnakkaista vaihtoehtoa:
* Avoin ''OpenSC'' sekä siihen liittyvät työkalut ja kirjastot
* Kaupallinen ''mPollux Digisign Client''
 
====OpenSC====
 
Vapaana ohjelmistona kehitetty [https://github.com/OpenSC/OpenSC/wiki OpenSC] on maailmanlaajuisesti käytössä oleva älykorttiohjelmisto. Se tukeutuu yleensä
[http://pcsclite.alioth.debian.org/ pcsc-lite] laitteistorajapintaan joka toteuttaa PC/SC määritykset. Projektin oma vastaava rajapinta [http://www.opensc-project.org/openct/ openct] on nykyään jo harvemmin käytössä.
 
Joissakin Linux-jakeluissa on älykorttien käsittely on integroitu toimivaksi kokonaisuudeksi, joiden käyttöönotto parhaimmillaan edellyttää ainoastaan lukijan kytkentää ja WWW-selaimen asetusten asettamista.
 
OpenSC on yhteensopiva lähes kaikkien älykorttien kanssa. 2018 alusta myönnettyihin HST-kortteihin on saatavilla testivaiheessa oleva kirjoitettu ohjelmistotuki OpenSC kirjastoon.
 
[https://github.com/OpenSC/OpenSC/pull/1608 FINeID: Initial FINeID v3 support #1608]
 
==== mPollux Digisign Client ====
 
Väestörekisterikeskus tarjoaa maksutta Fujitsu Services Oy:n [https://dvv.fi/linux-versiot mPollux Digisign Client] -kortinlukijaohjelmiston henkilökortin käyttäjille. VRK:n WWW-sivuilta on mahdollista ladata ohjelmisto CentOSille ja Ubuntulle 32- ja 64-bittisenä versioina. Paketit toiminevat myös monissa niille sukua olevissa jakeluissa.
 
Ohjelmistosta joulukuussa 2011 julkistettu 64-bittinen versio, mutta sitä ei tiettävästi ole saatavilla minkään Linux-jakelun virallisesta paketinhallinnasta. Käyttäjän tulee huolehtia päivityksistä manuaalisesti kyläilemällä Väestörekisterikeskuksen sivuilla säännöllisesti. mPollux-ohjelmistosta ei ole lähdekoodia saatavilla.
 
mPollux ohjelma ei toimi kunnolla. Tietokonetta voi joutua käynnistämään uudestaan ja sovelukset voivat jumittua ( 2018 - 2019 Ubuntu 18.04 )
 
===Sovellusohjelmien tuki===
 
Sovellustuki voi olla joko suora tai perustua kirjastoon joka on säädetty tukemaan kortinlukijaa ja sen varmenteita.
 
==== Firefox ====
 
Palvelun niin vaatiessa, mahdollisuus muodostaa ns client-side varmennetta vaativa SSL-yhteys jossa palvelupää tunnistaa selaimen käyttäjän kortin esimmäisellä varmenteella. Tällöin käyttäjän tiedot löydetään palvelun tietokannoista sähköisellä asiointitunnuksella.
 
Palvelu voi pyytää käyttäjää allekirjoittamaan sisältöä kortin toisella varmenteella. Teknisiä toteutustapoja on lukuisia ja erityisesti vanhat Java-pohjaiset toimivat huonosti. Uusimmat toteutukset käyttävät C-kielellä toteutettua selaimen pluginia joka tulee asentaa käyttäjän tietokoneeseen ennen palvelun käyttöä.
 
==== Opera ====
 
Selain (versio 11.60) ei tue pkcs#11 moduleita eikä siten myös älykortteja.
 
==== PAM ====
 
PAM (''Pluggable Authentication Module'') on asetettavissa tunnistamaan tietokoneeseen kirjautuja henkilökortin varmenteella. Tämä mahdollistaa kirjautumisen salasanan asemasta tai niiden rinnakkaisen käytön. Asetukset ja niiden määrittäminen on jakelukohtaisia. Toimiessaan PAM-tasolla, korttituki toimii niin merkkipohjaisessa kuin graafisessa sisäänkirjautumisessa.
 
==== SSH ====
 
OpenSSH tukee henkilökortin käyttöä autentikointiin PKCS#11-rajapinnan kautta. Kortin sisältämän avainparin julkinen osa siirretään niille ssh-palvelimille, joihin halutaan olla yhteydessä. SSH-asiakasohjelma pystyy käyttämään kortilla olevaa salaista osaa kättelyssä palvelimen kanssa. Avainten hallintaan käytetään OpenSSH:n mukana tulevia '''ssh-agent''' ja '''ssh-add''' apuohjelmia.
 
ssh-agent on ohjelma, joka säilöö ohjelman ajon ajaksi privaatteja salausavaimia ajomuistiin ssh-ohjelman käyttöön, mutta siinä on myös tuki opensc-pkcs11 pluginille. Tällöin niitä ei ladata muistiin, vaan vain viitataan kortilla olevaa avaimeen kirjaston rajapinnan kautta.
 
Korttia pystyy käyttämään OpenSSH:n komentoriviohjelmien (''ssh'', ''scp'', ''sftp'') lisäksi ohjelmien kanssa, jotka käyttävät ssh:ta siirtotienään. Esimerkki tällaisesta ohjelmistosta on versionhallintajärjestelmä ''git''.
 
==== OpenOffice.org ====
 
Dokumentteja on mahdollista allekirjoittaa kortin ensimmäisellä tunnistus-varmenteella. Tuki on ohjelmaan sisäänrakennettu eikä vaadi erillistä säätämistä toimiakseen, jos muu korttituki toimii.
 
==== qDigiDoc ====
 
Graafinen työkalu DigiDoc-määrityksen mukaisten digitaalisten säiliöiden (''eng container'' ) luomiseen ja käsittelyyn. Varmenteella voi allekirjoittaa ja/tai salata säiliön sisällön. Sisältö voi olla mitä tiedostoja tahansa. Ohjelmisto on kehitetty Virossa ja on yhteiskunnassa laajalti käytetty ja hyväksytty sovellus, merkittävin henkilökortin käyttökohde WWW-tunnistamisen rinnalla. Ohjelmasta voi lukea lisää sen omalta [[qDigiDoc]] sivulta.
 
==== Lähiverkon pääsynvalvonta - 802.1x ====
 
IEEE:n standardi [http://en.wikipedia.org/wiki/802.1x 802.1x] määrittelee langallisen ja langattoman lähiverkon pääsynvalvontamekanismeja. Tämä mahdollistaa tekniikkaan tukevan lähiverkkolaitteen asettamisen tunnistamaan liikennöijän jo OSI-tasolla 2 (lähiverkon rautaprotokolla) ja haluttaessa sallimaan tai estämään liikennöinnin.
Käytettäessä [http://en.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS EAP-TLS] (''Extensible Authentication Protocol - Transport Layer Security'') asetusta, verkkoon liittyjä tunnistetaan varmenteella joka voidaan lukea älykortilta ja pääsynvalvontatiedot saadaan verkon yli RADIUS-palvelulta. Wikipedian mukaan EAP-TLS ratkaisu on yksi turvallisimmista mahdollisista käytettäessä älykorttia.
 
 
==== Gnupg ohjelmat ====
 
Gnupg:ssä on älykorttituki, mutta se vaatii sille itselleen kirjoitetun sovelluksen kortilta (eikä Suomen henkilökortti ole tälläinen). Näitä kortteja on tällä tietämyksellä  markkinoilla kaksi eri tyyppistä eikä niitä käytetä kansalaisvarmenteina, vaan avainparit luodaan korteille itse ja niiden merkitys on sen mukainen. Arkkitehtuuri on seuraava:
 
* '''gpg-agent''' käynnistyy käyttäjän istuntoon taustalle ja viestii eri prosessien kanssa (vastaa ssh-agent palvelua)
* '''scdaemon''' palvelu käynnistyy tarvittaessa gpg-agentin käynnistämänä ja käsittelee älykortteja pcscd-palvelun läpi.
* '''gpg2''' ja '''gpgsm''' toimivat asiakasohjelmina joko suoraan tai muiden käyttöliittymien käynnistäminä.
 
Käyttäjäyhteisö ja kehittäjät ovat keskustelleet aiheesta aika-ajoin, mutta kehittäjien näkökanta on määrännyt tilanteen eikä varsinaista muutosta tilanteeseen ole tullut vuosiin. Erimielisyyttä on yritetty kiertää korvaamalla scdaemon prosessi vastaavalla jossa on opensc-pkcs11 tuki. Korvaavan taustapalvelun nimi on '''gnupg-pkcs11-scd'''.
 
==== KDE ja PKCS#11 ====
 
KDE työpöytäympäristön  tilanne kansallisten varmennekorttien käyttäjille ei ole hyvä. Työpöydän kehittäjät edustavat leiriä jossa RSA-Laboratorion PKCS määritykset nähdään vapaiden ohjelmistojen kilpailijoina ja niitä ei haluta tukea. KDE ympäristössä varmennetuki pohjautuu ainoastaan [[Gnupg]] ohjelmiston päälle rakennettuun '''Kleopatra''' varmennehallinta-sovellukseen ja yksittäisiin sovelluksiin joissa on Gnupg tuki. Kleopatralla voi jonkun verran hallita varmenteita ja se tunnistaa myös X.509 varmenteet joita voi siihen lisätä, mutta ohjelma ei suoraan tue opensc:n pkcs11-pluginia joka mahdollistaa X.509-tyyppisten varmenteiden käytön älykortilta.
 
Gnupg-yhteensopivia sovelluksia ovat KMail sähköposti, Kaddressbook-osoitekirja ja Kgpg salaus ja allekirjoitustyökalu. Gnupg-ohjelmilla omat asetustiedostonsa joita Kleopatra muuttaa käynnistyessään yrittääkseen varmistaa toimivuuden.
 
Henkilökortin käyttäjän näkökulmasta tilanne on sekava. Jos kortti on ylipäätään mahdollista saada toimimaan KDE-ohjelmissa, sen asettelu on lievästi sanottuna vaikeaa.
 
 
 
OpenSC-sivustolla on [http://www.opensc-project.org/opensc/wiki/ApplicationSupport pitkä lista] erillaisista ohjelmistojen tuesta varmenteille.
 
=== Apuohjelmat ===
 
Tähän osioon on kerätty ohjelmat, joita ei normaalissa kortin käytössä tarvita, mutta voivat olla hyödyksi vianetsinnässä, PIN-koodien vaihdossa ja yleisen mielenkiinnon vuoksi. Ohjelmat pkcs11-tool ja pkcs15-tool löytyvät OpenSC-paketista.
 
==== Korttipaikkojen listaus ====
  $ pkcs11-tool -L
  Slot 8          OmniKey CardMan 3121 00 00
    token label:  HENKILOKORTTI (perustunnusluku)
    token manuf:  VRK-FINEID
    token model:  PKCS#15
    token flags:  login required, PIN initialized, token initialized
    serial num  :  4600015034197296
  Slot 9          OmniKey CardMan 3121 00 00
    token label:  HENKILOKORTTI (allekirjoitustunn
    token manuf:  VRK-FINEID
    token model:  PKCS#15
    token flags:  login required, PIN initialized, token initialized
    serial num  :  4600015034197296
 
 
==== Varmenteiden listaus ====
  $ pkcs15-tool -c
  Using reader with a card: OmniKey CardMan 3121 00 00
  X.509 Certificate [todentamis- ja salausvarmenne]
          Flags    : 0
          Authority: no
          Path    : 3f004331
          ID      : 45
 
  X.509 Certificate [allekirjoitusvarmenne]
          Flags    : 0
          Authority: no
          Path    : 3f0050164332
          ID      : 46
 
  X.509 Certificate [VRK Gov. Root CA]
          Flags    : 0
          Authority: yes
          Path    : 3f004334
          ID      : 48
 
  X.509 Certificate [VRK Gov. CA for Citizen Qualified Certificates]
          Flags    : 0
          Authority: yes
          Path    : 3f004333
          ID      : 47
 
==== PIN koodin vaihto ====
 
==== PUK koodin käyttö ====
 
PUK (''pin unblock key'') koodia tarvitaan jos kortti menee jumiin esimerkiksi liian monesta epäonnistuneesta varmenteen käyttöyrityksestä. Koodin voi antaa joko komentorivioptiona (selkeämpi kirjoittaa) tai syöttää sen interaktiivisesti. Vivulla '''-a''' määritellään mitä pin-koodia ollaan vaihtamassa, numero yksi tarkoittaa ensimmäistä koodia.
  $ pkcs15-tool --unblock-pin --puk 12345678 -a 1
  Using reader with a card: OmniKey CardMan 1021 01 00
  Enter new PIN [PIN1]: ****
  Enter new PIN again [PIN1]: ****
 
==== CA-varmenteiden lukeminen kortilta ====
 
Henkilökortilla on Väestörekisterikeskuksen juuri- ja kansalais- eli ns CA-varmenteet. CA-varmennetta tarvittaessa, järkevintä on ottaa se henkilökortilta eikä ladata verkosta jotta ei altistu teoreettiselle ns [http://fi.wikipedia.org/wiki/Man-in-the-middle_attack ''man-in-the-middle''] hyökkäykselle. Valtaosa on saanut korttinsa suoraan poliisilta jolloin voidaan olla suhteellisen varmoja, ettei varmennetta tai korttia ole väärennetty. Jos sovellus ei tue varmenteiden ketjutusta, tulee käyttää sitä CA-varmennetta jolla itse osapuolen varmenne on allekirjoitettu. Muussa tapauksessa juurivarmenne riittää.
 
Varmenteen saa kopioitua kortilta tiedostoon käyttäen '''-r''' vipua ja varmenteen ''id-numeroa''. Yhdistettynä nämä yhdeksi komennoksi:
 
  $ pkcs15-tool -r $(pkcs15-tool -c|grep  -A4 "Root"|grep ID|cut -d: -f2) > vrkrootca.pem
 
Yllä itse varmenne luetaan kortilta ja tulos ohjataan tiedostoon. Tiedostoa voi käyttää sellaisenaan esim WWW-selaimessa tai Apache-httpd palvelimessa.
 
==== Yhteiskäyttö ja Opensc <= 0.11 ====
 
Jotkin sovellukset vaativat kortin yhtäaikaista käyttöä (esim https tunnistus ja pin2 allekirjoitus sen yhteyden aikana). Tämä saattaa olla oletuksen estetty <code>/etc/opensc.conf</code> tiedostossa  '''lock_login''' asetuksella, rivi joka on opensc-0.11 ja varhaisemmissa kommentoitu pois kokonaan, siten oletuksena '''true''' tilassa. Poistamalla kommentin ja jättämällä '''false''' arvon, lukitus estyy ja useat yhtäaikaiset sovellukset toimivat.
 
  # By default, the OpenSC PKCS#11 module will lock your card
  # once you authenticate to the card via C_Login.
  # This is to prevent other users or other applications
  # from connecting to the card and perform crypto operations
  # (which may be possible because you have already authenticated
  # with the card).
 
  # Thus it is impossible to use several smart card aware
  # applications at the same time, e.g. you cannot run both
  # Firefox and Thunderbird at the same time, if both are
  # configured to use your smart card.
  #
  # Default: true
  lock_login = false;
 
Opensc >= 0.12 asetus on pois päältä oletuksena ja käyttäjän toimenpiteitä ei tarvita. Asetustiedostossa on asiaa selitetty runsaammin englanniksi jos sen taustat kiinnostavat.
 
 
==== Sovellusten jumiutumiset ====
 
Varmenteita käyttävät ohjelmat ikävä kyllä jumittavat usein. Tällöin voi kokeilla kortin irroittamista lukijasta ja se usein vapauttaa jumitumisen ja jämähtänyttä toimintoa voi kokeilla heti uudelleen kortin lukijaan palauttamisen jälkeen.
 
Toisinaan varmenteen luku ei tunnu onnistuvan ollenkaan ja silloin kannttaa kokeilla ''lypsämistä'' antamalla seuraava komento monta kertaa peräjälkeen kunnes se onnistuu:
 
$ pkcs15-tool -c
PKCS#15 binding failed: Wrong length
$ pkcs15-tool -c
PKCS#15 binding failed: Wrong length
$ pkcs15-tool -c
Using reader with a card: OmniKey CardMan 3121 01 00
X.509 Certificate...
 
Komento tulee antaa samana käyttäjänä minä on istuntoon kirjautunut. Ongelma on kehittäjien tiedossa.
 
Joskus koko korttiin ei saada yhteyttä:
 
$ pkcs15-tool -c
Using reader with a card: OmniKey CardMan 1021 00 00
Failed to connect to card: Unknown error
 
Jos käytössä on pcscd, sen uudelleenkäynnistäminen auttaa:
 
# service pcscd restart
Redirecting to /bin/systemctl  restart pcscd.service
 
Tämän jälkeen tilanne on normali jälleen. Sovellukset kuten WWW-selain tulee käynnistää uudelleen koska sen yhteydet pcscd:hen ovat katkenneet eivätkä ne osaa muodostaa niitä itse uudelleen.
 
== Sovelluskohtaisia ohjeita ==
 
Jos käyttöön liittyy vastapuolen varmenne joka on Väestörekisterkeskuksen allekirjoittama, niin luotettavuuden todentaminen tapahtuu VRK:n CA-varmennetta vasten joka tulee olla asennettuna. Tapahtuma voi olla esimerkiksi allekirjoitettu tai salattu sähköpostiviesti tai myös WWW-palvelin joka käyttää VRK:n allekirjoittamaa palvelinvarmennetta.
 
Varmenenteen voi kopioida kortilta suoraan kuten kohdasssa [[HST#CA-varmenteiden_lukeminen_kortilta|CA-varmenteiden lukeminen kortilta]] ohjeistetaan tai ladata se verkosta tietokoneelle VRK:n [http://fineid.fi/default.aspx?docid=2237&site=9&id=332 CA-varmenne sivulta]. Useimmissa tapauksissa ns juurivarmenne riittää (''eng Root CA'').
 
 
=== Firefox ===
 
Firefoxin varmennekortti-tuen tehtävälista:
 
# Juurivarmenteen asentaminen (pakollinen)
# Ulkoisen korttituen lisääminen (yleisimmin tarvittava)
# Allekirjoitus-pluginin asentaminen
 
==== Juurivarmenteen asentaminen ====
 
Avaa PEM-muotoinen X.509 varmennetiedosto ''File -> Open'' ja etsi kyseinen tiedosto, paina ''Open'' tai klikkaa varmenteen linkkiä VRK:n sivulla.
 
Valise kaikki:
* ''Trust this CA to identify web sites''
* ''Trust this CA to identify email users''
* ''Trust this CA to identify software developers''
 
Paina ''Ok''
 
==== Korttituen lisääminen ====
 
Varmennekortin tuki lisätään turva-asetuksista lisäämällä sinne '''onepin-opensc-pkcs11''' plugin. Tämä sellaisenaan mahdollistaa varmenteiden käytön asiakaspään tunnistamisessa SSL-yhteyksillä. Erilliset pluginit jotka käyttävät varmennekorttia, tarvitsevat myöskin tätä asetusta.
 
Suomenkielisessä selaimessa:
 
*valitse ''Muokkaa'' &rarr;'' Asetukset'' &rarr;'' Lisäasetukset'' &rarr; ''Salaus'' &rarr; ''Turvallisuuslaitteet''
*valitse ''Muokkaa'' &rarr;'' Asetukset'' &rarr;'' Lisäasetukset'' &rarr; ''Salaus'' &rarr; ''Turvallisuuslaitteet''
*paina ''Lataa''
*paina ''Lataa''
*lisää: <tt>/usr/lib/opensc-pkcs11.so</tt>
*lisää: <tt>/usr/lib/onepin-opensc-pkcs11.so</tt>


tai
Englanninkielisessä selaimessa:


*valitse ''Edit'' &rarr; ''Preferences'' &rarr; ''Advanced'' &rarr; ''Encryption'' &rarr; ''Security Devices''
*valitse ''Edit'' &rarr; ''Preferences'' &rarr; ''Advanced'' &rarr; ''Encryption'' &rarr; ''Security Devices''
*paina ''Load''
*paina ''Load''
*lisää: <tt>/usr/lib/opensc-pkcs11.so</tt>
*lisää: <tt>/usr/lib/onepin-opensc-pkcs11.so</tt>
 
 
==== pin2-koodin turha kysely ja onepin tausta ====
 
Firefoxissa on ''ominaisuus'' joka pistää sen kysymään joka käyttökerta molempia pin-koodeja. Tämän ratkaisusta oli näkemyseroja joka johti pattitilanteeseen ja OpenSC-projekti päätyi kiertämään selaimen kehittäjien jääräpäisyyden tekemällä häkkäyksen itse pluginiin ja oman versionsa siitä jota kutsutaan '''onepin-opensc-pkcs11''' pluginiksi. Aiheesta enemmän projektin postilistan [http://www.opensc-project.org/pipermail/opensc-devel/2007-June/010031.html viestissä].
 
==== Error code: ssl_error_renegotiation_not_allowed ====
 
Uudemmat Firefox-versiot (versiosta 4) vaativat joidenkin palveluiden kohdalla selaimen lisäasetuksen. Tämä johtuu vuonna 2009 löydetystä [https://wiki.mozilla.org/Security:Renegotiation suunnitteluvirheestä TLS-protokollassa], joka mahdollistaa ns. mies välissä -hyökkäyksen. Firefox yrittää suojautua tätä haavoittuvuutta vastaan kieltämällä TLS-protokollan uusintakättelyn. Tätä ei ole otettu huomioon (tätä kirjoitettaessa 5/2011) muun muasssa niissä palveluissa, jotka käyttävät ns. VETUMA-palvelua (Verkkotunnistautuminen ja maksaminen) käyttäjän tunnistamiseen.
 
Kunnes tämä ongelma on ratkaistu palvelinpuolella, ongelman pystyy kiertämään sallimalla Firefoxissa TLS-protokollan kaksoiskättelyn haluamilleen osoitteille &ndash; VETUMA-palvelun tapauksessa osoite on ''tunnistus.suomi.fi''. Asetukset saa näkyville Firefoxissa kirjoittamalla osoitekenttään about:config. Etsi listasta kenttä <code>security.ssl.renego_unrestricted_hosts</code> ja anna sille arvoksi esimerkiksi <code>tunnistus.suomi.fi,tyvi.elma.fi</code>. Asetuksen vaihdon onnistumisen voi kokeilla VRK:n [https://verkkopalvelu.vrk.fi/Omat/Etusivu.aspx Omien tietojen tarkistus] -palvelusta. Huomaa, että asetuksessa tulee olla itse kohde palvelin, ei pelkkä domain.
 


===Thunderbird===
===Thunderbird===
*valitse ''Muokkaa'' &rarr; ''Asetukset'' &rarr; ''Lisäasetukset'' &rarr; ''Varmenteet'' &rarr; ''Turvallisuuslaitteet''
*valitse ''Muokkaa'' &rarr; ''Asetukset'' &rarr; ''Lisäasetukset'' &rarr; ''Varmenteet'' &rarr; ''Turvallisuuslaitteet''
*paina ''Lataa''
*paina ''Lataa''
Rivi 58: Rivi 362:
*halutun tilin ''Turvallisuus''-valikosta valitse kortin todentamis- ja salausvarmenne
*halutun tilin ''Turvallisuus''-valikosta valitse kortin todentamis- ja salausvarmenne


===SSH===
Thunderbirdin ja Firefoxin voi saada käyttämään samaa varmennetietokantaa. Miten tämä tapahtuu on selitetty [https://wiki.mozilla.org/NSS_Shared_DB_Howto Mozillan Wiki-sivulla]. Yhteisen tietokannan etuna on se, että varmenteen saa tuotua tietokantaan yhdella klikkauksella Firefoxissa (esimerkiksi [http://vrk.fineid.fi/certsearchB.asp?todo=setlang&lang=fi VRK:n varmennehakusivulta]), jonka jälkeen varmenne on automaattisesti käytettävissä myös Thunderbirdissä.
OpenSSH tukee HST-kortin käyttöä autentikointiin PKCS#11-rajapinnan kautta. Kortin sisältämän avainparin
julkinen osa siirretään niille ssh-palvelimille, joihin halutaan olla yhteydessä. SSH-asiakasohjelma pystyy käyttämään kortilla olevaa salaista osaa kättelyssä palvelimen kanssa. Avainten hallintaan käytetään OpenSSH:n mukana tulevia apuohjelmia ''ssh-agent'' ja ''ssh-add''.
* Varmista, että ssh-agent käynnistyy esim. X11-session alussa; Miten tämä tapahtuu riippuu Linux-distrosta, X11-ympäristöstä, ym.
** On hyvin mahdollista, että ssh-agent-ohjelman käynnistyksestä on huolehdittu omassa Linux-distrossasi &mdash; katso dokumentaatiosta tai ps-komennolla
** Joissakin tapauksissa pitää itse huolehtia ohjelman käyttöönotosta; esimerkiksi Gentoo Linuxissa KDE-ympäristöllä pitää poistaa kommenteista ssh-agentin käynnistyskomennot tiedostossa <code>/etc/kde/startup/agent-startup.sh</code>
* ssh-agent on ohjelma, joka säilöö ohjelman ajon ajaksi privaatteja salausavaimia ssh-ohjelman käyttöön, mutta se pystyy myös käyttämään PKCS#11-kirjastoa
* Avaimia lisätään ssh-agent -ohjelman muistiin ssh-add -ohjelmalla; älykorttien yhteydessä käytetään -s-optiota, jolla kerrotaan PKCS#11-kirjaston polku &mdash; tässä tapauksessa avainta ei siirretä ssh-agent -ohjelman muistiin vaan kortilla olevaa avainta käsitellään kirjaston rajapinnan kautta
* Kortin avaimeen liittyvä PIN kysytään <code>ssh-add</code>-komennon yhteydessä, ja se jää ssh-agent prosessin muistiin
* Esim. <code>ssh-add -s /usr/lib/opensc-pkcs11.so</code>
* Kortin on oltava lukijassa kun ssh-add -komento annetaan
* Avainparin julkinen avain on siirrettävä vastapuolen (= serverin) <code>~/.ssh/authorized_keys</code>-tiedostoon; avaimen saa tulostettua ssh-add -L -komennolla:


=== qDigiDoc ===
Sovelluksen pitäisi toimia myös Suomen henkilökortilla, mutta se vaatii hieman toimenpiteitä ensin. Ohjeet löytyvät kokonaisuudessaan [[qDigiDoc]] sivulta.
=== Ssh ===
Avaimia lisätään ssh-agent -ohjelmaan ssh-add -ohjelmalla. Älykorttien yhteydessä käytetään -s-optiota, jolla kerrotaan pluginin polku. Kortin avaimeen liittyvä PIN kysytään <code>ssh-add</code>-komennon yhteydessä ja se jää ssh-agent prosessin muistiin.
'''Käyttö''':
* Aseta kortti lukijaan ja lisää plugin:
  <code>$ ssh-add -s /usr/lib/opensc-pkcs11.so</code>
* Avainparin julkisen avaimen saa tulostettua ssh-add -L -komennolla:
  $ ssh-add -L
  $ ssh-add -L
  ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCrFmt4STTrjGROHuP7uPrl6MRxqZ/hBKqHtIcvetXV3j9wIrle+Mk9laRRowWoo9x2DqL4IIhP6SFO4NUup0/kRZkIP9Bavm0PkkboRpILysu5G5fKYYL2sTrcNGmzKsF2ItLoTotK6rD9azX+ZvYly9irAfVAkWbd0lYyWrg78Q== /usr/lib64/opensc-pkcs11.so
  ssh-rsa AAAAB3NzaC...VAkWbd0lYyWrg78Q== /usr/lib64/opensc-pkcs11.so
* Jos tätä varmennetta ei ole aiemmin käytetty ssh:n kanssa, lisää ylläoleva tekstirimpsu (koko rivi sellaisenaan) <code>~/.ssh/authorized_keys</code> tiedostoon palvelimella.
* Nyt ssh-ohjelmat toimivat normaalisti kortin varmenteilla.
 
 
'''Vianmääritys''':
* Varmista, että ssh-agent on käynnistynyt sisäänkirjautumisesi yhteydessä (prosessilistauksessa näkyy ''ssh-agent''). Käynnistäminen riippuu Linux-jakelustasi, yleensä se on automaattinen eikä mitään tarvitse tehdä. Jos sitä ei siitä huolimatta ole käynnissä, se on voinut kräshätä.
 
=== Lähiverkon pääsynvalvonta - 802.1x ===
 
Asetukset määritellään ''wpa_supplicant'' asetustiedostoihin, joka toisissa jakeluissa sijaita esimerkiksi <code>/etc/wpa_supplicant/wpa_supplicant.conf</code> tiedostossa.
 
  pkcs11_module_path=/usr/lib/pkcs11/opensc-pkcs11.so
 
  # Example of EAP-TLS with smartcard (openssl engine)
  network={
    ssid="example.com"
    key_mgmt=WPA-EAP
    eap=TLS
  proto=RSN
  pairwise=CCMP TKIP
  group=CCMP TKIP
  identity="user@example.com"
  ca_cert="/etc/pki/tls/certs/vrkrootca.pem"
  client_cert="/etc/pki/tls/certs/user.pem"
 
  engine=1
 
  # use the opensc engine
  #engine_id="opensc"
  #key_id="45"
 
  # use the pkcs11 engine
    engine_id="pkcs11"
    key_id="id_45"
 
    # Optional PIN configuration; this can be left out and PIN will be
    # asked through the control interface
    # pin="1234"
  }
 
Asetusohje on peräisin [http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf esimerkistä].
 
=== Gnupg ohjelmistot ===
 
Gnupg:n eri komponenttien asetuksia muutetaan käyttäjän kotihakemiston <code>.gnupg/</code> hakemistossa. Henkilökorttituen lisääminen edellyttää '''scdaemon'''-palvelun korvaamista '''gpg-agent.conf''' tiedostossa:
 
  scdaemon-program /usr/bin/gnupg-pkcs11-scd
  pinentry-program /usr/bin/pinentry-qt
 
ja kyseisten palveluiden uudelleenkäynnistämistä. Jos korttituki toimii, komento:
 
$ gpg2 -K
 
listaa varmenteet jossa on mukana älykortin varmenne. Jos ei, asetukset kaipaavat lisää säätämistä joita on ohjeistettu omalla [[gnupg-pkcs11-scd]] sivulla.
 
=== Kleopatra ===
 
Kleopatra osaa muuttaa tarvitsemiaan Gnupg:n asetuksia tiedostoista: '''options''', '''gpg-agent.conf''', '''gpgsm.conf''' ja '''scdaemon.conf'''. Viimeeksi mainitulla ei ole merkitystä jos käytetään korvaavaa palvelua ja sen asetustiedostoa '''gnupg-pkcs11-scd.conf'''.


== Jakelukohtaisia ohjeita ==
== Jakelukohtaisia ohjeita ==
{| class="wikitable" style="text-align:center"
|+ominaisuusvertailu
|-
! ominaisuus / jakelu
! Arch Linux
! Fedora
! Gentoo
! OpenSuse
! RHEL
! Ubuntu
|-
| Kyseinen jakeluversio || || 14 || || || 5 || 18.04
|-
| Oletusrajapinta || pcsc || pcsc || pcsc ||  || pcsc ||
|-
| OpenSC versio || 0.16.0-5 || 0.22 || || || || 0.17.0-3 ||
|-
| Korttituki asentuu oletuksena || kyllä || kyllä || ei  || || kyllä ||
|-
| Korttituki käynnistyy oletuksena || ei || kyllä || ei || || kyllä ||
|-
| Firefox näkee pluginin automaattisesti || ei || ei || ei ||  || ei ||
|-
| ssh-agent käynnistyy oletuksena || ei || kyllä || ei || ei || kyllä ||
|-
| PAM tukee älykorttia || ei || kyllä || kyllä || || kyllä ||
|-
| PAM työkalu tukee älykorttia || ei || vähän ||  || || vähän ||
|-
| Löytyykö CA-avaimet jakelusta || ei || ei || ei || || ei ||
|-
| Tuki 2018 ennen myönnetyille korteille || kyllä || kyllä || kyllä || || kyllä || kyllä ||
|-
| Tuki 2018 jälkeen myönnetyille korteille ||  ||  ||  || ||  || ei ||
|-
|}
Vertailussa tulisi käyttää viimeisintä vakaata jakeluversiota. Jos näin ei ole, taulukkoa tulee päivittää.
===Arch Linux===
* Asenna paketit '''ccid''', '''pcsclite''', '''opensc'''
* Muuta palvelu pcscd automaattisesti käynnistyväksi:
sudo systemctl enable pcsc
* Käynnistä palvelu pcscd:
systemctl start pcscd
* onepin-opensc-pkcs11.so -plugin sijaitsee hakemistossa <code>/usr/lib</code>
=== CentOS ===
Fedoran ohjeet pitäisi käydä sellaisenaan.


=== Fedora ===
=== Fedora ===


* Pakolliset paketit: '''opensc''', '''pcsc-lite''' (tai '''openct''').
* Lukijat: Omnikey-1021,-3021,-4321 toimii, Omnikey-4040 ei taida enää viimeisimmissä jakeluissa.
* Sovelluspaketit: '''openssh-clients''', '''qdigidoc'''.
* Vaaditut paketit: '''opensc''', '''pcsc-lite''' (tai '''openct''').
* Initscriptit: openct ja pcscd oletuksena päällä asennuksen jälkeen.
* Sovelluspaketit: '''firefox''', '''thunderbird''', '''openssh-clients''', '''qdigidoc''', '''mozilla-esteid''' (digiallekirjoitus), '''kdepim''' (kleopatra), '''pam_pkcs11'''.
* CA-avaimien paketti: '''ca-certificates'''
* Pakettienhallintatyökalu: [[Yum]] ja [[PackageKit]]
* ssh-agent käynnistyy automaattisesti jos on asennettu.
* ssh-agent käynnistyy automaattisesti jos on asennettu.
* opensc-pkcs11.so plugin sijaitsee arkkitehtuurin mukaisessa hakemistossa joko:
* onepin-opensc-pkcs11.so plugin sijaitsee arkkitehtuurin mukaisessa hakemistossa joko: <code>/usr/lib/onepin-opensc-pkcs11.so</code> tai <code>/usr/lib64/onepin-opensc-pkcs11.so</code>
<code>/usr/lib/opensc-pkcs11.so</code>


tai
=== Gentoo ===
* ssh-agent: KDE-ympäristöllä pitää poistaa kommenteista agentin käynnistyskomennot tiedostossa /etc/kde/startup/agent-startup.sh


<code>/usr/lib64/opensc-pkcs11.so</code>
=== OpenSuse ===
 
* Pakettienhallintatyökalu: [[Zypper]] ja [[PackageKit]]
* Asenna paketit opensc ja pcsc-lite
 
=== RHEL (Red Hat Enterprise Linux) ===
 
Käynnistä Subscription Manager, mene System-valikkoon ja valitse Repositories. Merkitse {rhel-7-server-optional-rpms | rhel-7-desktop-optional-rpms | rhel-7-workstation-optional-rpms} pakettivaranto käyttöön.
 
Nyt voit jatkaa Fedoran ohjeilla.


===Ubuntu===
===Ubuntu===
*Asenna paketit <tt>opensc</tt>, <tt>mozilla-opensc</tt> ja <tt>pcscd</tt>
 
*Liitä tietokoneeseen älykortin lukija.  
* Asenna paketit <tt>opensc</tt> ja <tt>pcscd</tt>
* Pakettienhallintatyökalu: [[Apt]], [[PackageKit]]
* Firefox Asteukset / Yksityisyys ja Turvallisuus / Sertifikaatit / Turvallisuus laitteet , jos
PKSC11# mooduli puuttuu lisää, load /usr/lib/x86_64-linux-gnu/onepin-opensc-pkcs11.so
 
* versio 18.04 ja VRK:n 2018 jälkeen myönnetyt kortit eivät toimi kunnolla millään ohjelmistolla (mPollux kaatuilee)
* 2018 jälkeen myönnetyille korteille ei ole tukea OpenSC:llä


== Katso myös ==
== Katso myös ==
* [[Mobiilivarmenne]]
* [[Apache httpd]]
* [[Firefox]]
* [[Gnupg]] - GNU Privacy Guard
* [[gnupg-pkcs11-scd]] - pkcs11 plugin Gnupg ohjelmistoon.
* [[Openoffice]] - OpenOffice.org toimisto-ohjelmisto
* [[qDigiDoc]]
* [[PAM]] - Pluggable Authentication Modules
* [[SSH]] - Secure SHell
* [[Thunderbird]]
* [[VPN]] - Virtual Private Network
* [[Wpa supplicant]]


== Aiheesta muualla ==
== Aiheesta muualla ==
 
* [https://digisaatio.fi/wiki/Linux digisaatio.fi/Linux]
* [http://fineid.fi/ http://fineid.fi]
* [http://fineid.fi/ http://fineid.fi] - Suomalaisen henkilökortin kotisivu.
* [http://www.vaestorekisterikeskus.fi/ http://www.vaestorekisterikeskus.fi/]
* [http://www.vaestorekisterikeskus.fi/ http://www.vaestorekisterikeskus.fi/] - Väestörekisterikeskus
* [http://www.opensc.org/ http://www.opensc.org/ ] - OpenSC korttityökalujen kotisivu.
* [http://fi.wikipedia.org/wiki/HST http://fi.wikipedia.org/wiki/HST] - Henkilökortti Wikipediassa.
* [http://fi.wikipedia.org/wiki/PKI http://fi.wikipedia.org/wiki/PKI] - Julkisen avaimen infrastruktuuri Wikipediassa.
* [https://github.com/OpenSC/OpenSC/wiki/ opensc-wiki ] - OpenSC korttityökalujen kotisivu.
* [https://github.com/OpenSC/OpenSC/wiki/Finnish-FINEID OpenSC-wiki - FinnishEid] - OpenSC projektin FINEID sivu.
* [http://www.cryptsoft.com/pkcs11doc/v230/ http://www.cryptsoft.com/pkcs11doc/v230/] -  pkcs#11 standardi.
* [http://www.openxades.org/files/DigiDoc%20format%201.3.doc openxades.org - digidoc-1.3] - DigiDoc määritys.
* [http://code.google.com/p/esteid/ http://code.google.com/p/esteid/]- Viron henkilökortin ohjelmistokehitys.
* [http://code.google.com/p/esteid/ http://code.google.com/p/esteid/]- Viron henkilökortin ohjelmistokehitys.
* [http://id.ee/ http://id.ee/] - Viron henkilökortin ohjesivusto (est, eng, rus).
* [http://id.ee/ http://id.ee/] - Viron henkilökortin ohjesivusto (est, eng, rus).
* [https://bugs.kde.org/show_bug.cgi?id=116201 kde.org - bug 116201] - Keskustelua KDE:n pkcs#11 tuesta.
* [https://www.bugzilla.mozilla.org/show_bug.cgi?id=511652 mozilla.org - Add a GUI option to toggle the "Friendly certs" option of NSS]
* [irc://irc.freenode.net/opensc irc://irc.freenode.net/opensc] - OpenSC IRC kanava.
* [irc://irc.freenode.net/fineid irc://irc.freenode.net/fineid] - #fineid IRC kanava.
* [https://github.com/OpenSC/OpenSC/pull/1608 https://github.com/OpenSC/OpenSC/pull/1608] - Kehitysvaiheessa oleva tuki vuodesta 2018 eteenpäin myönnetyille HST-korteille
* [https://makarainen.net/Henkilovarmenne-kortinlukijaohjelmiston-asentaminen-Ubuntussa https://makarainen.net/Henkilovarmenne-kortinlukijaohjelmiston-asentaminen-Ubuntussa] - Kansalaisvarmenteen vaatima kortinlukijaohjelmiston asentaminen Ubuntussa


[[Luokka:Laitteisto]]
[[Luokka:Laitteisto]]
[[Luokka:Ohjeet]]
[[Luokka:Ohjeet]]
[[Luokka:Tietoturva]]
[[Luokka:Suomi]]

Nykyinen versio 13. maaliskuuta 2024 kello 18.15

Väestörekisterikeskus tarjoaa Suomessa henkilön sähköisen tunnistamisen (HST, eng FINEID) ratkaisua sirullisella henkilökortilla. Kortin myöntää poliisi. Henkilökortilla on julkisen avaimen menetelmään perustuva laatuvarmenne. Varmenteen avulla voi tunnistautua, allekirjoittaa ja salata dokumentteja ja viestiliikennettä.

HST-kortin etuina on vahvan salauksen käyttö yhdistettynä vaatimukseen fyysisen esineen ("token") hallussapitoon. Toisin sanoen, niin kauan kuin esine (kortti) on hallussasi, kukaan ei pysty käyttämään väärin korttiin liittyvää sähköistä identiteettiä. Kortti on maksukortin kokoinen, helposti mukana pidettävä ja sen käyttö on suojattu PIN-koodilla. PIN-koodi on aina sama, riippumatta mihin palveluun kortilla tunnistaudutaan.

Peruskäyttäjän tehtävälista[muokkaa]

Vaikka sivulla on paljon asiaa, ei tämä oikeasti niin vaikeaa ole, lyhyesti:

  1. Hanki henkilökortti. Sitä voi anoa
    • paikalliselta poliisilta, toimitusaika kaksi vkoa.
    • Poliisin sähköisessä asiointipalvelussa mikäli käytössä on pankkitunnukset tai mobiilivarmenne tai voimassaoleva henkilökortti. Vaatii valokuvaamolta saatavan kuvatunnuksen.
  2. Hanki kortin lukijalaite, tarkasta tuetut mallit ennen ostamista.
  3. Tutustu Linux-jakelukohtaisiin ohjeisiin mahdollisten lisäohjelmistojen asentamiseksi (lisätietoja alla).
  4. Tarvittaessa asenna vaaditut paketit ja konfiguroi ne (lähinnä vanhat lukijat).
  5. Käy tarvitsemasi sovellukset läpi (Firefox jne) ja konfiguroi ne.
  6. Testaa ja käytä. Testaamiseen voit käyttää fineid.fi testisivua.

Huom! Poliisilla käyvälle: Varmista kun anot korttia, että virkailija täyttää hakemukseen myös sähköpostiosoitteesi – oletuksena hän jättää tämän kentän tyhjäksi, jolloin sähköpostiosoitetta ei tule varmenteeseen. Osoite varmenteessa ei ole välttämätön kun korttia käytetään tunnistautumiseen, mutta siitä voi olla hyötyä sähköpostin salauksessa ja se kuuluu kortin hintaan.

Huom! Verkosta haettaessa: Mikäli haluat henkilökorttiisi Kela-tiedot (viivakoodi taakse), pyydä sitä kun käyt allekirjoittamassa henkilökortin, verkkohakemuksesta puuttuu kohta sille, mutta allekirjoittaessa se voidaan lisätä. Huom! Henkilökorttilaki muuttui 1.1.2017. Samassa yhteydessä luovuttiin sairausvakuutustietojen merkitsemisestä henkilökorttiin.

Laitteet[muokkaa]

Korttia varten tarvitaan kortinlukija ja lukijaan sopiva ajuri. Lukijoita on pääasiassa kahta tyyppiä. Ulkoinen, tyypillisesti USB-väylään liitettävä lukija, sekä joissakin kannettavissa tietokoneissa oleva sisäinen lukija. Toiset esim kannettavan tietokoneen laajennuskorttipaikkaan sopivat lukijat näkyvät USB-väylässä ja toimivat sen mukaisesti. Hinnat vaihtelevat mallista ja ostopaikasta riippuen, nykyaikaisen USB-lukijan hinta vaihtelee kuuden ja 25 euron välillä.

Lukijalaitteita on myös omalla fyysisellä näppäimistöllä varustettuna jota käytetään pin-koodien syöttämiseen. Tällöin koodeja käsitellään ainoastaan lukijassa eivätkä ne siten altistu mahdollisille tietokoneen haittaohjelmille.


Nykyaikaiset lukijat[muokkaa]

Kun on hankkimassa USB-lukijaa, kannattaa valita ns. CCID (Chip Card Interface Device) -speksin mukainen lukija. CCID on USB-väylän yhteyteen määritelty ns. Device Class -määrittely, joka määrittelee yhteisen protokollan eri valmistajien USB-lukijoille.

Esimerkkejä CCID-protokollan mukaisista lukijoista ovat:

  • Omnikey 1021, 3021, 3121, 4321 ym (4040 varauksella).
  • SCM SCR 3310
  • Dellin tiettyjen USB-näppäimistömallien integroidut lukijat


Vanhemmat lukijat[muokkaa]

Aikanaan valtaosa ensimmäisistä älykorttilukijoista oli RS-232 pohjaisia ja siten niiden käyttöönotto oli myös hieman työläämpää. Ensimmäiset USB-lukijat olivat myös RS-232 laitteita, niissä oli vain sisäinen USB-RS232 adapteripiiri (usein Prolific PL2303, pl2303 ajuri) joten laite lopulta näkyy yhtenä ttyUSB<n>-laitteena ajurinsa perusteella ja pitää siten ottaa käsin käyttöön.

Ennen USB-laitteiden CCID-määrittelyn valmistumista jokainen valmistaja käytti omaa protokollaa; näitä vanhempia lukijoita näkee vielä silloin tällöin.

  • Towitoko ChipdDrive-micro 130 - USB-RS232 emulaatiolla oleva ihan toimiva lukija jos jakelu tukee.
  • Towitoko ChipDrive Extern 330 - Sama sähköisesti kuin ChipDrive-micro.


Tietyt lukijalaitteiden brändit ovat vaihtuneet kun firmat ovat ostelleet toisiaan.

Towitoko ChipDrive[muokkaa]

Ei asennu automaattisesti, tehtävä seuraavat toimenpiteet käsin.

openct:

Poista /etc/openct.conf tiedostosta kommentointi seuraavan lohkon osalta:

 #reader towitoko {
 #       driver = towitoko;
 #       device = serial:/dev/ttyS0;
 #};

Varmistu, että device osoittaa oikeaan laitteeseen. (esim ttyUSB0). Käynnistä openct palvelu uudelleen.

pcscd:

?

Ohjelmistot[muokkaa]

Arkkitehtuuri[muokkaa]

Sovellusohjelma tarvitsee ohjelmointirajapinnan (API) pystyäkseen keskustelemaan älykortin kanssa. RSA Laboratories on määritellyt C-ohjelmointirajapinnan niin sanotuille kryptograafisille tokeneille nimeltä PKCS#11. Se on 11. osa RSA Laboratoriesin sarjassa Public Key Cryptography Standards ja tunnetaan myös lempinimellä Cryptoki (väännös sanoista Cryptographic Token Interface). Cryptoki on tyypillisesti toteutettu ns. pluginina (.so-tiedosto). Useampi sovellus voi käyttää Cryptoki-rajapintaa rinnakkain; kirjaston tehtävänä on synkronoida pääsy yksittäiselle tokenille. Cryptoki pystyy myös hallitsemaan useampaa järjestelmään liitettyä tokenia. OpenSC-ohjelmisto sisältää Cryptoki-toteutuksen jaettuna kirjastona nimellä opensc-pkcs11.so.

PKCS#11-kirjaston ja lukijan välille tarvitaan vielä ns. middleware, josta on avoimena lähdekoodina kaksi vaihtoehtoista toteutusta: PCSC-lite tai OpenCT.

PC/SC (Personal Computer/Smart Card) on alun perin Microsoftilta tullut aloite, joka määrittelee yhtenäisen, laitteistosta riippumattoman, rajapinnan älykorteille. PC/SC:n ja Cryptokin erona on, että PC/SC määrittelee alemman tason rajapinnan älykorteille yleensä, kun taas Cryptoki määrittelee rajapinnan julkisen avaimen cryptotokeneille, jotka eivät välttämättä ole edes toteutettu älykortteina.

OpenCT on OpenSC:n kehittäjien kehittämä "liima" ylemmän tason Cryptoki-kirjaston ja laitteiston välillä. OpenCT on suoraviivaisempi vaihtoehto PC/SC:lle. Se pystyy käsittelemään lukijoita suoraan, kun taas PC/SC (PCSC-lite) tarvitsee erikseen vielä lukijalle ajurin. USB-lukijoilla käytetään CCID-ajuria. Toisaalta OpenCT ei toteuta PC/SC-rajapintaa, joten sitä ei voi käyttää jos sovellus on kirjoitettu käyttämään PC/SC-rajapintaa. Nykyään sen kehitys on pysähtynyt ja siten laitteisto- ja yhteisötuki on heikentynyt.

Alla on esitetty kaavioina yllä mainitut kaksi ohjelmistovaihtoehtoa:


    


Ajurit ja middleware[muokkaa]

Kortin käyttö edellyttää kortinlukijaa sekä asennettua kortinlukijaohjelmistoa. Ohjelmistoksi on olemassa kaksi rinnakkaista vaihtoehtoa:

  • Avoin OpenSC sekä siihen liittyvät työkalut ja kirjastot
  • Kaupallinen mPollux Digisign Client

OpenSC[muokkaa]

Vapaana ohjelmistona kehitetty OpenSC on maailmanlaajuisesti käytössä oleva älykorttiohjelmisto. Se tukeutuu yleensä pcsc-lite laitteistorajapintaan joka toteuttaa PC/SC määritykset. Projektin oma vastaava rajapinta openct on nykyään jo harvemmin käytössä.

Joissakin Linux-jakeluissa on älykorttien käsittely on integroitu toimivaksi kokonaisuudeksi, joiden käyttöönotto parhaimmillaan edellyttää ainoastaan lukijan kytkentää ja WWW-selaimen asetusten asettamista.

OpenSC on yhteensopiva lähes kaikkien älykorttien kanssa. 2018 alusta myönnettyihin HST-kortteihin on saatavilla testivaiheessa oleva kirjoitettu ohjelmistotuki OpenSC kirjastoon.

FINeID: Initial FINeID v3 support #1608

mPollux Digisign Client[muokkaa]

Väestörekisterikeskus tarjoaa maksutta Fujitsu Services Oy:n mPollux Digisign Client -kortinlukijaohjelmiston henkilökortin käyttäjille. VRK:n WWW-sivuilta on mahdollista ladata ohjelmisto CentOSille ja Ubuntulle 32- ja 64-bittisenä versioina. Paketit toiminevat myös monissa niille sukua olevissa jakeluissa.

Ohjelmistosta joulukuussa 2011 julkistettu 64-bittinen versio, mutta sitä ei tiettävästi ole saatavilla minkään Linux-jakelun virallisesta paketinhallinnasta. Käyttäjän tulee huolehtia päivityksistä manuaalisesti kyläilemällä Väestörekisterikeskuksen sivuilla säännöllisesti. mPollux-ohjelmistosta ei ole lähdekoodia saatavilla.

mPollux ohjelma ei toimi kunnolla. Tietokonetta voi joutua käynnistämään uudestaan ja sovelukset voivat jumittua ( 2018 - 2019 Ubuntu 18.04 )

Sovellusohjelmien tuki[muokkaa]

Sovellustuki voi olla joko suora tai perustua kirjastoon joka on säädetty tukemaan kortinlukijaa ja sen varmenteita.

Firefox[muokkaa]

Palvelun niin vaatiessa, mahdollisuus muodostaa ns client-side varmennetta vaativa SSL-yhteys jossa palvelupää tunnistaa selaimen käyttäjän kortin esimmäisellä varmenteella. Tällöin käyttäjän tiedot löydetään palvelun tietokannoista sähköisellä asiointitunnuksella.

Palvelu voi pyytää käyttäjää allekirjoittamaan sisältöä kortin toisella varmenteella. Teknisiä toteutustapoja on lukuisia ja erityisesti vanhat Java-pohjaiset toimivat huonosti. Uusimmat toteutukset käyttävät C-kielellä toteutettua selaimen pluginia joka tulee asentaa käyttäjän tietokoneeseen ennen palvelun käyttöä.

Opera[muokkaa]

Selain (versio 11.60) ei tue pkcs#11 moduleita eikä siten myös älykortteja.

PAM[muokkaa]

PAM (Pluggable Authentication Module) on asetettavissa tunnistamaan tietokoneeseen kirjautuja henkilökortin varmenteella. Tämä mahdollistaa kirjautumisen salasanan asemasta tai niiden rinnakkaisen käytön. Asetukset ja niiden määrittäminen on jakelukohtaisia. Toimiessaan PAM-tasolla, korttituki toimii niin merkkipohjaisessa kuin graafisessa sisäänkirjautumisessa.

SSH[muokkaa]

OpenSSH tukee henkilökortin käyttöä autentikointiin PKCS#11-rajapinnan kautta. Kortin sisältämän avainparin julkinen osa siirretään niille ssh-palvelimille, joihin halutaan olla yhteydessä. SSH-asiakasohjelma pystyy käyttämään kortilla olevaa salaista osaa kättelyssä palvelimen kanssa. Avainten hallintaan käytetään OpenSSH:n mukana tulevia ssh-agent ja ssh-add apuohjelmia.

ssh-agent on ohjelma, joka säilöö ohjelman ajon ajaksi privaatteja salausavaimia ajomuistiin ssh-ohjelman käyttöön, mutta siinä on myös tuki opensc-pkcs11 pluginille. Tällöin niitä ei ladata muistiin, vaan vain viitataan kortilla olevaa avaimeen kirjaston rajapinnan kautta.

Korttia pystyy käyttämään OpenSSH:n komentoriviohjelmien (ssh, scp, sftp) lisäksi ohjelmien kanssa, jotka käyttävät ssh:ta siirtotienään. Esimerkki tällaisesta ohjelmistosta on versionhallintajärjestelmä git.

OpenOffice.org[muokkaa]

Dokumentteja on mahdollista allekirjoittaa kortin ensimmäisellä tunnistus-varmenteella. Tuki on ohjelmaan sisäänrakennettu eikä vaadi erillistä säätämistä toimiakseen, jos muu korttituki toimii.

qDigiDoc[muokkaa]

Graafinen työkalu DigiDoc-määrityksen mukaisten digitaalisten säiliöiden (eng container ) luomiseen ja käsittelyyn. Varmenteella voi allekirjoittaa ja/tai salata säiliön sisällön. Sisältö voi olla mitä tiedostoja tahansa. Ohjelmisto on kehitetty Virossa ja on yhteiskunnassa laajalti käytetty ja hyväksytty sovellus, merkittävin henkilökortin käyttökohde WWW-tunnistamisen rinnalla. Ohjelmasta voi lukea lisää sen omalta qDigiDoc sivulta.

Lähiverkon pääsynvalvonta - 802.1x[muokkaa]

IEEE:n standardi 802.1x määrittelee langallisen ja langattoman lähiverkon pääsynvalvontamekanismeja. Tämä mahdollistaa tekniikkaan tukevan lähiverkkolaitteen asettamisen tunnistamaan liikennöijän jo OSI-tasolla 2 (lähiverkon rautaprotokolla) ja haluttaessa sallimaan tai estämään liikennöinnin. Käytettäessä EAP-TLS (Extensible Authentication Protocol - Transport Layer Security) asetusta, verkkoon liittyjä tunnistetaan varmenteella joka voidaan lukea älykortilta ja pääsynvalvontatiedot saadaan verkon yli RADIUS-palvelulta. Wikipedian mukaan EAP-TLS ratkaisu on yksi turvallisimmista mahdollisista käytettäessä älykorttia.


Gnupg ohjelmat[muokkaa]

Gnupg:ssä on älykorttituki, mutta se vaatii sille itselleen kirjoitetun sovelluksen kortilta (eikä Suomen henkilökortti ole tälläinen). Näitä kortteja on tällä tietämyksellä markkinoilla kaksi eri tyyppistä eikä niitä käytetä kansalaisvarmenteina, vaan avainparit luodaan korteille itse ja niiden merkitys on sen mukainen. Arkkitehtuuri on seuraava:

  • gpg-agent käynnistyy käyttäjän istuntoon taustalle ja viestii eri prosessien kanssa (vastaa ssh-agent palvelua)
  • scdaemon palvelu käynnistyy tarvittaessa gpg-agentin käynnistämänä ja käsittelee älykortteja pcscd-palvelun läpi.
  • gpg2 ja gpgsm toimivat asiakasohjelmina joko suoraan tai muiden käyttöliittymien käynnistäminä.

Käyttäjäyhteisö ja kehittäjät ovat keskustelleet aiheesta aika-ajoin, mutta kehittäjien näkökanta on määrännyt tilanteen eikä varsinaista muutosta tilanteeseen ole tullut vuosiin. Erimielisyyttä on yritetty kiertää korvaamalla scdaemon prosessi vastaavalla jossa on opensc-pkcs11 tuki. Korvaavan taustapalvelun nimi on gnupg-pkcs11-scd.

KDE ja PKCS#11[muokkaa]

KDE työpöytäympäristön tilanne kansallisten varmennekorttien käyttäjille ei ole hyvä. Työpöydän kehittäjät edustavat leiriä jossa RSA-Laboratorion PKCS määritykset nähdään vapaiden ohjelmistojen kilpailijoina ja niitä ei haluta tukea. KDE ympäristössä varmennetuki pohjautuu ainoastaan Gnupg ohjelmiston päälle rakennettuun Kleopatra varmennehallinta-sovellukseen ja yksittäisiin sovelluksiin joissa on Gnupg tuki. Kleopatralla voi jonkun verran hallita varmenteita ja se tunnistaa myös X.509 varmenteet joita voi siihen lisätä, mutta ohjelma ei suoraan tue opensc:n pkcs11-pluginia joka mahdollistaa X.509-tyyppisten varmenteiden käytön älykortilta.

Gnupg-yhteensopivia sovelluksia ovat KMail sähköposti, Kaddressbook-osoitekirja ja Kgpg salaus ja allekirjoitustyökalu. Gnupg-ohjelmilla omat asetustiedostonsa joita Kleopatra muuttaa käynnistyessään yrittääkseen varmistaa toimivuuden.

Henkilökortin käyttäjän näkökulmasta tilanne on sekava. Jos kortti on ylipäätään mahdollista saada toimimaan KDE-ohjelmissa, sen asettelu on lievästi sanottuna vaikeaa.


OpenSC-sivustolla on pitkä lista erillaisista ohjelmistojen tuesta varmenteille.

Apuohjelmat[muokkaa]

Tähän osioon on kerätty ohjelmat, joita ei normaalissa kortin käytössä tarvita, mutta voivat olla hyödyksi vianetsinnässä, PIN-koodien vaihdossa ja yleisen mielenkiinnon vuoksi. Ohjelmat pkcs11-tool ja pkcs15-tool löytyvät OpenSC-paketista.

Korttipaikkojen listaus[muokkaa]

 $ pkcs11-tool -L
 Slot 8           OmniKey CardMan 3121 00 00
   token label:   HENKILOKORTTI (perustunnusluku)
   token manuf:   VRK-FINEID
   token model:   PKCS#15
   token flags:   login required, PIN initialized, token initialized
   serial num  :  4600015034197296
 Slot 9           OmniKey CardMan 3121 00 00
   token label:   HENKILOKORTTI (allekirjoitustunn
   token manuf:   VRK-FINEID
   token model:   PKCS#15
   token flags:   login required, PIN initialized, token initialized
   serial num  :  4600015034197296


Varmenteiden listaus[muokkaa]

 $ pkcs15-tool -c
 Using reader with a card: OmniKey CardMan 3121 00 00
 X.509 Certificate [todentamis- ja salausvarmenne]
         Flags    : 0
         Authority: no
         Path     : 3f004331
         ID       : 45
 
 X.509 Certificate [allekirjoitusvarmenne]
         Flags    : 0
         Authority: no
         Path     : 3f0050164332
         ID       : 46
 
 X.509 Certificate [VRK Gov. Root CA]
         Flags    : 0
         Authority: yes
         Path     : 3f004334
         ID       : 48
 
 X.509 Certificate [VRK Gov. CA for Citizen Qualified Certificates]
         Flags    : 0
         Authority: yes
         Path     : 3f004333
         ID       : 47

PIN koodin vaihto[muokkaa]

PUK koodin käyttö[muokkaa]

PUK (pin unblock key) koodia tarvitaan jos kortti menee jumiin esimerkiksi liian monesta epäonnistuneesta varmenteen käyttöyrityksestä. Koodin voi antaa joko komentorivioptiona (selkeämpi kirjoittaa) tai syöttää sen interaktiivisesti. Vivulla -a määritellään mitä pin-koodia ollaan vaihtamassa, numero yksi tarkoittaa ensimmäistä koodia.

 $ pkcs15-tool --unblock-pin --puk 12345678 -a 1
 Using reader with a card: OmniKey CardMan 1021 01 00
 Enter new PIN [PIN1]: ****
 Enter new PIN again [PIN1]: ****

CA-varmenteiden lukeminen kortilta[muokkaa]

Henkilökortilla on Väestörekisterikeskuksen juuri- ja kansalais- eli ns CA-varmenteet. CA-varmennetta tarvittaessa, järkevintä on ottaa se henkilökortilta eikä ladata verkosta jotta ei altistu teoreettiselle ns man-in-the-middle hyökkäykselle. Valtaosa on saanut korttinsa suoraan poliisilta jolloin voidaan olla suhteellisen varmoja, ettei varmennetta tai korttia ole väärennetty. Jos sovellus ei tue varmenteiden ketjutusta, tulee käyttää sitä CA-varmennetta jolla itse osapuolen varmenne on allekirjoitettu. Muussa tapauksessa juurivarmenne riittää.

Varmenteen saa kopioitua kortilta tiedostoon käyttäen -r vipua ja varmenteen id-numeroa. Yhdistettynä nämä yhdeksi komennoksi:

 $ pkcs15-tool -r $(pkcs15-tool -c|grep  -A4 "Root"|grep ID|cut -d: -f2) > vrkrootca.pem

Yllä itse varmenne luetaan kortilta ja tulos ohjataan tiedostoon. Tiedostoa voi käyttää sellaisenaan esim WWW-selaimessa tai Apache-httpd palvelimessa.

Yhteiskäyttö ja Opensc <= 0.11[muokkaa]

Jotkin sovellukset vaativat kortin yhtäaikaista käyttöä (esim https tunnistus ja pin2 allekirjoitus sen yhteyden aikana). Tämä saattaa olla oletuksen estetty /etc/opensc.conf tiedostossa lock_login asetuksella, rivi joka on opensc-0.11 ja varhaisemmissa kommentoitu pois kokonaan, siten oletuksena true tilassa. Poistamalla kommentin ja jättämällä false arvon, lukitus estyy ja useat yhtäaikaiset sovellukset toimivat.

 # By default, the OpenSC PKCS#11 module will lock your card
 # once you authenticate to the card via C_Login.
 # This is to prevent other users or other applications
 # from connecting to the card and perform crypto operations
 # (which may be possible because you have already authenticated
 # with the card).
 
 # Thus it is impossible to use several smart card aware
 # applications at the same time, e.g. you cannot run both
 # Firefox and Thunderbird at the same time, if both are
 # configured to use your smart card.
 #
 # Default: true
 lock_login = false;

Opensc >= 0.12 asetus on pois päältä oletuksena ja käyttäjän toimenpiteitä ei tarvita. Asetustiedostossa on asiaa selitetty runsaammin englanniksi jos sen taustat kiinnostavat.


Sovellusten jumiutumiset[muokkaa]

Varmenteita käyttävät ohjelmat ikävä kyllä jumittavat usein. Tällöin voi kokeilla kortin irroittamista lukijasta ja se usein vapauttaa jumitumisen ja jämähtänyttä toimintoa voi kokeilla heti uudelleen kortin lukijaan palauttamisen jälkeen.

Toisinaan varmenteen luku ei tunnu onnistuvan ollenkaan ja silloin kannttaa kokeilla lypsämistä antamalla seuraava komento monta kertaa peräjälkeen kunnes se onnistuu:

$ pkcs15-tool -c
PKCS#15 binding failed: Wrong length
$ pkcs15-tool -c
PKCS#15 binding failed: Wrong length
$ pkcs15-tool -c
Using reader with a card: OmniKey CardMan 3121 01 00
X.509 Certificate...

Komento tulee antaa samana käyttäjänä minä on istuntoon kirjautunut. Ongelma on kehittäjien tiedossa.

Joskus koko korttiin ei saada yhteyttä:

$ pkcs15-tool -c
Using reader with a card: OmniKey CardMan 1021 00 00
Failed to connect to card: Unknown error

Jos käytössä on pcscd, sen uudelleenkäynnistäminen auttaa:

# service pcscd restart
Redirecting to /bin/systemctl  restart pcscd.service

Tämän jälkeen tilanne on normali jälleen. Sovellukset kuten WWW-selain tulee käynnistää uudelleen koska sen yhteydet pcscd:hen ovat katkenneet eivätkä ne osaa muodostaa niitä itse uudelleen.

Sovelluskohtaisia ohjeita[muokkaa]

Jos käyttöön liittyy vastapuolen varmenne joka on Väestörekisterkeskuksen allekirjoittama, niin luotettavuuden todentaminen tapahtuu VRK:n CA-varmennetta vasten joka tulee olla asennettuna. Tapahtuma voi olla esimerkiksi allekirjoitettu tai salattu sähköpostiviesti tai myös WWW-palvelin joka käyttää VRK:n allekirjoittamaa palvelinvarmennetta.

Varmenenteen voi kopioida kortilta suoraan kuten kohdasssa CA-varmenteiden lukeminen kortilta ohjeistetaan tai ladata se verkosta tietokoneelle VRK:n CA-varmenne sivulta. Useimmissa tapauksissa ns juurivarmenne riittää (eng Root CA).


Firefox[muokkaa]

Firefoxin varmennekortti-tuen tehtävälista:

  1. Juurivarmenteen asentaminen (pakollinen)
  2. Ulkoisen korttituen lisääminen (yleisimmin tarvittava)
  3. Allekirjoitus-pluginin asentaminen

Juurivarmenteen asentaminen[muokkaa]

Avaa PEM-muotoinen X.509 varmennetiedosto File -> Open ja etsi kyseinen tiedosto, paina Open tai klikkaa varmenteen linkkiä VRK:n sivulla.

Valise kaikki:

  • Trust this CA to identify web sites
  • Trust this CA to identify email users
  • Trust this CA to identify software developers

Paina Ok

Korttituen lisääminen[muokkaa]

Varmennekortin tuki lisätään turva-asetuksista lisäämällä sinne onepin-opensc-pkcs11 plugin. Tämä sellaisenaan mahdollistaa varmenteiden käytön asiakaspään tunnistamisessa SSL-yhteyksillä. Erilliset pluginit jotka käyttävät varmennekorttia, tarvitsevat myöskin tätä asetusta.

Suomenkielisessä selaimessa:

  • valitse Muokkaa Asetukset LisäasetuksetSalausTurvallisuuslaitteet
  • paina Lataa
  • lisää: /usr/lib/onepin-opensc-pkcs11.so

Englanninkielisessä selaimessa:

  • valitse EditPreferencesAdvancedEncryptionSecurity Devices
  • paina Load
  • lisää: /usr/lib/onepin-opensc-pkcs11.so


pin2-koodin turha kysely ja onepin tausta[muokkaa]

Firefoxissa on ominaisuus joka pistää sen kysymään joka käyttökerta molempia pin-koodeja. Tämän ratkaisusta oli näkemyseroja joka johti pattitilanteeseen ja OpenSC-projekti päätyi kiertämään selaimen kehittäjien jääräpäisyyden tekemällä häkkäyksen itse pluginiin ja oman versionsa siitä jota kutsutaan onepin-opensc-pkcs11 pluginiksi. Aiheesta enemmän projektin postilistan viestissä.

Error code: ssl_error_renegotiation_not_allowed[muokkaa]

Uudemmat Firefox-versiot (versiosta 4) vaativat joidenkin palveluiden kohdalla selaimen lisäasetuksen. Tämä johtuu vuonna 2009 löydetystä suunnitteluvirheestä TLS-protokollassa, joka mahdollistaa ns. mies välissä -hyökkäyksen. Firefox yrittää suojautua tätä haavoittuvuutta vastaan kieltämällä TLS-protokollan uusintakättelyn. Tätä ei ole otettu huomioon (tätä kirjoitettaessa 5/2011) muun muasssa niissä palveluissa, jotka käyttävät ns. VETUMA-palvelua (Verkkotunnistautuminen ja maksaminen) käyttäjän tunnistamiseen.

Kunnes tämä ongelma on ratkaistu palvelinpuolella, ongelman pystyy kiertämään sallimalla Firefoxissa TLS-protokollan kaksoiskättelyn haluamilleen osoitteille – VETUMA-palvelun tapauksessa osoite on tunnistus.suomi.fi. Asetukset saa näkyville Firefoxissa kirjoittamalla osoitekenttään about:config. Etsi listasta kenttä security.ssl.renego_unrestricted_hosts ja anna sille arvoksi esimerkiksi tunnistus.suomi.fi,tyvi.elma.fi. Asetuksen vaihdon onnistumisen voi kokeilla VRK:n Omien tietojen tarkistus -palvelusta. Huomaa, että asetuksessa tulee olla itse kohde palvelin, ei pelkkä domain.


Thunderbird[muokkaa]

  • valitse MuokkaaAsetuksetLisäasetuksetVarmenteetTurvallisuuslaitteet
  • paina Lataa
  • lisää: /usr/lib/opensc-pkcs11.so
  • edelleen lisäasetuksista valitse Näytä varmenteet
  • valitse Varmentajat-välilehdeltä omat Väestörekisterikeskus CA:n alla olevat Varmenteet ja Muokkaa
  • lisää valinnat: "Tämä varmenne voi todentaa WWW-sivustoja" ja "Tämä varmenne voi todentaa sähköpostittajia"
  • valitse MuokkaaTilien asetukset
  • halutun tilin Turvallisuus-valikosta valitse kortin todentamis- ja salausvarmenne

Thunderbirdin ja Firefoxin voi saada käyttämään samaa varmennetietokantaa. Miten tämä tapahtuu on selitetty Mozillan Wiki-sivulla. Yhteisen tietokannan etuna on se, että varmenteen saa tuotua tietokantaan yhdella klikkauksella Firefoxissa (esimerkiksi VRK:n varmennehakusivulta), jonka jälkeen varmenne on automaattisesti käytettävissä myös Thunderbirdissä.

qDigiDoc[muokkaa]

Sovelluksen pitäisi toimia myös Suomen henkilökortilla, mutta se vaatii hieman toimenpiteitä ensin. Ohjeet löytyvät kokonaisuudessaan qDigiDoc sivulta.

Ssh[muokkaa]

Avaimia lisätään ssh-agent -ohjelmaan ssh-add -ohjelmalla. Älykorttien yhteydessä käytetään -s-optiota, jolla kerrotaan pluginin polku. Kortin avaimeen liittyvä PIN kysytään ssh-add-komennon yhteydessä ja se jää ssh-agent prosessin muistiin.

Käyttö:

  • Aseta kortti lukijaan ja lisää plugin:
 $ ssh-add -s /usr/lib/opensc-pkcs11.so
  • Avainparin julkisen avaimen saa tulostettua ssh-add -L -komennolla:
$ ssh-add -L
ssh-rsa AAAAB3NzaC...VAkWbd0lYyWrg78Q== /usr/lib64/opensc-pkcs11.so
  • Jos tätä varmennetta ei ole aiemmin käytetty ssh:n kanssa, lisää ylläoleva tekstirimpsu (koko rivi sellaisenaan) ~/.ssh/authorized_keys tiedostoon palvelimella.
  • Nyt ssh-ohjelmat toimivat normaalisti kortin varmenteilla.


Vianmääritys:

  • Varmista, että ssh-agent on käynnistynyt sisäänkirjautumisesi yhteydessä (prosessilistauksessa näkyy ssh-agent). Käynnistäminen riippuu Linux-jakelustasi, yleensä se on automaattinen eikä mitään tarvitse tehdä. Jos sitä ei siitä huolimatta ole käynnissä, se on voinut kräshätä.

Lähiverkon pääsynvalvonta - 802.1x[muokkaa]

Asetukset määritellään wpa_supplicant asetustiedostoihin, joka toisissa jakeluissa sijaita esimerkiksi /etc/wpa_supplicant/wpa_supplicant.conf tiedostossa.

 pkcs11_module_path=/usr/lib/pkcs11/opensc-pkcs11.so
 
 # Example of EAP-TLS with smartcard (openssl engine)
 network={
   ssid="example.com"
   key_mgmt=WPA-EAP
   eap=TLS
  	proto=RSN
 	 pairwise=CCMP TKIP
  	group=CCMP TKIP
 	 identity="user@example.com"
 	 ca_cert="/etc/pki/tls/certs/vrkrootca.pem"
 	 client_cert="/etc/pki/tls/certs/user.pem"
 
 	 engine=1
 
 	 # use the opensc engine
 	 #engine_id="opensc"
 	 #key_id="45"
 
 	 # use the pkcs11 engine
   engine_id="pkcs11"
   key_id="id_45"
 
   # Optional PIN configuration; this can be left out and PIN will be
   # asked through the control interface
   # pin="1234"
 }

Asetusohje on peräisin esimerkistä.

Gnupg ohjelmistot[muokkaa]

Gnupg:n eri komponenttien asetuksia muutetaan käyttäjän kotihakemiston .gnupg/ hakemistossa. Henkilökorttituen lisääminen edellyttää scdaemon-palvelun korvaamista gpg-agent.conf tiedostossa:

 scdaemon-program /usr/bin/gnupg-pkcs11-scd
 pinentry-program /usr/bin/pinentry-qt

ja kyseisten palveluiden uudelleenkäynnistämistä. Jos korttituki toimii, komento:

$ gpg2 -K

listaa varmenteet jossa on mukana älykortin varmenne. Jos ei, asetukset kaipaavat lisää säätämistä joita on ohjeistettu omalla gnupg-pkcs11-scd sivulla.

Kleopatra[muokkaa]

Kleopatra osaa muuttaa tarvitsemiaan Gnupg:n asetuksia tiedostoista: options, gpg-agent.conf, gpgsm.conf ja scdaemon.conf. Viimeeksi mainitulla ei ole merkitystä jos käytetään korvaavaa palvelua ja sen asetustiedostoa gnupg-pkcs11-scd.conf.

Jakelukohtaisia ohjeita[muokkaa]

ominaisuusvertailu
ominaisuus / jakelu Arch Linux Fedora Gentoo OpenSuse RHEL Ubuntu
Kyseinen jakeluversio 14 5 18.04
Oletusrajapinta pcsc pcsc pcsc pcsc
OpenSC versio 0.16.0-5 0.22 0.17.0-3
Korttituki asentuu oletuksena kyllä kyllä ei kyllä
Korttituki käynnistyy oletuksena ei kyllä ei kyllä
Firefox näkee pluginin automaattisesti ei ei ei ei
ssh-agent käynnistyy oletuksena ei kyllä ei ei kyllä
PAM tukee älykorttia ei kyllä kyllä kyllä
PAM työkalu tukee älykorttia ei vähän vähän
Löytyykö CA-avaimet jakelusta ei ei ei ei
Tuki 2018 ennen myönnetyille korteille kyllä kyllä kyllä kyllä kyllä
Tuki 2018 jälkeen myönnetyille korteille ei

Vertailussa tulisi käyttää viimeisintä vakaata jakeluversiota. Jos näin ei ole, taulukkoa tulee päivittää.

Arch Linux[muokkaa]

  • Asenna paketit ccid, pcsclite, opensc
  • Muuta palvelu pcscd automaattisesti käynnistyväksi:
sudo systemctl enable pcsc
  • Käynnistä palvelu pcscd:
systemctl start pcscd
  • onepin-opensc-pkcs11.so -plugin sijaitsee hakemistossa /usr/lib

CentOS[muokkaa]

Fedoran ohjeet pitäisi käydä sellaisenaan.

Fedora[muokkaa]

  • Lukijat: Omnikey-1021,-3021,-4321 toimii, Omnikey-4040 ei taida enää viimeisimmissä jakeluissa.
  • Vaaditut paketit: opensc, pcsc-lite (tai openct).
  • Initscriptit: openct ja pcscd oletuksena päällä asennuksen jälkeen.
  • Sovelluspaketit: firefox, thunderbird, openssh-clients, qdigidoc, mozilla-esteid (digiallekirjoitus), kdepim (kleopatra), pam_pkcs11.
  • CA-avaimien paketti: ca-certificates
  • Pakettienhallintatyökalu: Yum ja PackageKit
  • ssh-agent käynnistyy automaattisesti jos on asennettu.
  • onepin-opensc-pkcs11.so plugin sijaitsee arkkitehtuurin mukaisessa hakemistossa joko: /usr/lib/onepin-opensc-pkcs11.so tai /usr/lib64/onepin-opensc-pkcs11.so

Gentoo[muokkaa]

  • ssh-agent: KDE-ympäristöllä pitää poistaa kommenteista agentin käynnistyskomennot tiedostossa /etc/kde/startup/agent-startup.sh

OpenSuse[muokkaa]

  • Pakettienhallintatyökalu: Zypper ja PackageKit
  • Asenna paketit opensc ja pcsc-lite

RHEL (Red Hat Enterprise Linux)[muokkaa]

Käynnistä Subscription Manager, mene System-valikkoon ja valitse Repositories. Merkitse {rhel-7-server-optional-rpms | rhel-7-desktop-optional-rpms | rhel-7-workstation-optional-rpms} pakettivaranto käyttöön.

Nyt voit jatkaa Fedoran ohjeilla.

Ubuntu[muokkaa]

  • Asenna paketit opensc ja pcscd
  • Pakettienhallintatyökalu: Apt, PackageKit
  • Firefox Asteukset / Yksityisyys ja Turvallisuus / Sertifikaatit / Turvallisuus laitteet , jos

PKSC11# mooduli puuttuu lisää, load /usr/lib/x86_64-linux-gnu/onepin-opensc-pkcs11.so

  • versio 18.04 ja VRK:n 2018 jälkeen myönnetyt kortit eivät toimi kunnolla millään ohjelmistolla (mPollux kaatuilee)
  • 2018 jälkeen myönnetyille korteille ei ole tukea OpenSC:llä

Katso myös[muokkaa]

Aiheesta muualla[muokkaa]