Muutokset

Siirry navigaatioon Siirry hakuun

Tekniikka/Digivirasto

4 623 merkkiä lisätty, 28. huhtikuuta 2024
ei muokkausyhteenvetoa
[[Digivirasto]] '''Digiviraston''' tietoja voi hyödyntää palveluita rakentaessa. Julkisesti avoimena ovat:* varmennehakemisto josta voi tehdä kyselyitä LDAP-protokollalla* varmenteiden sulkulista jonka voi ladata HTTP-protokollalla
== Henkilön tiedot LDAP varmennehakemisto ==
Haut kannattaa LDAP-hakemiston kyselyitä voi tehdä [[SATUDigivirasto]]n järjestelmästä anonyymisti ja osa ([[VTJ|väestötietojärjestelmä]],) vaatii sopimuksen ja pääsyoikeudet. Kyselyitä voi tehdä käyttäen SATU-tunnusta tai nimistä ja SATU:sta johdettua Common Name -tunnuksella jos mahdollista sillä se on täysin yksilöivä attribuuttia. Jos henkilöllä ei ole henkilökorttia ja pysyy aina samana vaikka henkilön kortti vaihtuisikin uudempaansen aktiivista varmennetta, kyselyt eivät palauta mitään.
Huomaa, että ldapsearch ohjelman syntaksi on muuttunut, vanhemmat versiot käyttävät ''-h <hostname>'' syntaksia, uudemmat ''-H ldap://ldap.fineid.fi''. Uudemmissa versioissa vanha -h vipu on poistettu kokonaan. Hakemistohierarkian ja kyselyiden kanssa avusti LDAP-asiantuntija Timo Kirves <[mailto:timo@omit.fi timo@omit.fi]>.  '''Hakemiston hierarkia''': ldapsearch -LLL -x -H ldap://ldap.fineid.fi -b "" -s base objectclass=\* namingcontexts dn: namingcontexts: c=FI namingcontexts: dc=vp4,dc=x namingcontexts: o=netscaperoot * ''c=FI'': väestön palvelutuotantoon tarkoitettu asioijatieto.* ''dc=vp4,dc=x'': sisäisessä käytössä¹.* ''o=netscaperoot'': fedora 389-hakemiston konfiguraatiot¹. ¹ - kyselyt vaativat tunnukset ja tunnistautumisen. Hierarkiassa esiintyvä '''dmdName''' (''directory management domain, DMD'') on ?. === Henkilön tiedot === Haut kannattaa tehdä [[SATU]]-tunnuksella jos mahdollista sillä se on täysin yksilöivä ja pysyy aina samana vaikka henkilön kortti vaihtuisikin uudempaan. Hauissa on hyvä huomioida, että jokaisella on SATU olemassa, mutta kyselyt eivät palauta mitään jos ei ole aktiivista varmennetta, tämä pätee vanhentuneisiin varmenteisiin sekä henkilöihin jotka eivät ole ikinä hankkineet [[Henkilökortti|henkilökorttia]] tai [[Mobiilivarmenne|Mobiilivarmennetta]].  '''Common Name (CN) haku SATU-tunnuksella''': $ ldapsearch -x -h H ldap://ldap.fineid.fi -b dmdName=fineid,c=fi serialNumber=10000350X cn
cn: TUOMALA JUHA 10000350X
'''SATU-tunnuksen haku etu- ja sukunimen perusteella, poiskytketyllä määrärajoitteella''': $ ldapsearch -x -h H ldap://ldap.fineid.fi -LLL -b dmdName=fineid,c=fi -z 0 "(&(givenname=Juha )(sn=Tuomala ))" serialnumber |grep serial | sort -n Size limit exceeded (4) serialnumber: 00900498163 serialnumber: 113777539 serialnumber: 120026198 serialnumber: 120599377 serialnumber: 12336318R serialnumber: 12483472M serialnumber: 125401831 serialnumber: 126213776 serialnumber: 12728797B serialnumber: 127433250 serialnumber: 128405476 serialnumber: 12843729U serialnumber: 129961023 serialnumber: 13055079K serialnumber: 132177567 serialnumber: 13299151V serialnumber: 134080901 serialnumber: 137797480 serialnumber: 13958023T serialnumber: 14119990J serialnumber: 14145318K serialnumber: 14203888X serialnumber: 14220740J serialnumber: 143368800 serialnumber: 14528602K10000350X serialnumber: 15081443511921353S serialnumber: 15145532J12346428V serialnumber: 15291511J12668514R serialnumber: 15389218C130409648 serialnumber: 91100093N13321775N
$
'''Käyttäjän varmenteen haku SATU-tunnuksella''': $ ldapsearch -x -h H ldap://ldap.fineid.fi -b dmdName=fineid,c=fi serialnumber=10000350X usercertificate
# extended LDIF
#
# numEntries: 1
== Sulkulista ==
$ ldapsearch -x -h ldap.fineid.fi -b dmdName=fineid,c=fi certificaterevocationlist
'''Asioijan tunnistusvarmenteen sormenjäljen tulostus SATU-tunnuksella''':
$ ldapsearch -x -H ldap://ldap.fineid.fi -LLL -b dmdName=fineid,c=fi serialnumber=10000350X usercertificate |grep -A40 usercertificate | sed -e 's#usercertificate;binary::##g' | head -n -1 | python -c "import sys; sys.stdout.write('-----BEGIN CERTIFICATE-----\n%s-----END CERTIFICATE-----\n' % (''.join(sys.stdin.readlines()) ) )" | openssl x509 -noout -fingerprint|cut -d\= -f2
B8:82:51:F3:2A:50:D0:50:E2:C6:92:9B:4F:D9:F9:A4:E3:13:78:D1
$
 
=== Sähköposti ===
 
Varemnnehakemiston suurin käyttökohde on sähköpostin salaus. Digivirasto on rakentanut varmennehakemistonsa siten, että organisaatio- ja sotevarmenteilla näkyy ''mail'' attribuutti, kansalaisvarmenteista ei - vaikka se olisi ilmoitettu valtiolle korttia hakiessa. Suurin osa sähköpostiohjelmista olettaa mail kentän olemassaolon ja käyttävät tätä hakeakseen salausvarmenteen.
 
Salattua viestiä lähettäessä ohjelmasta riippuen tapahtuu suunnilleen seuraavaa:
 
Vastaanottaja voidaan saada selville kirjoittamalla nimeä merkki kerrallaan, postiohjelmat hakua kun ensimmäiset merkit kirjoitetaan vastaanottajakenttään, esim Tuomala:
* haetaan henkilöobjekteja
* suodatetaan hakua '''mail, cn, givename, sn''' attribuutteja käyttäen TAI-operaatiolla
* haetaan attribuutteja '''cn, mail, givenname, sn, objectclass'''
 
LDAP-protokollssa suodatin:
(&(|(|(objectclass=person)(objectclass=groupOfNames))(mail=*))(|(|(|(cn=tuoma*)(mail=tuoma*))(givenName=tuoma*))(sn=tuoma*)))
 
Hakutuloksista ja niiden attribuuteista rakennetaan esimerkiksi ns dropdown-lista käyttöliittymään, josta käyttäjä valitsee tarkoittamansa vastaanottajan ja mail-attribuutti on tiedossa.
 
Jos vastaanottaja valitaan käyttöliittymän listasta esim osoitekirjasta tai olemassaolevasta viestistä, mail-attribuutti on tiedossa.
 
Kun haluttu henkilö tiedetään, tehdään toinen kysely mail-attribuuttia käyttäen jotta saadaan ''usercertificate'' attribuutin arvo eli varmennehakemiston DER-koodattu varmenne, joka sisältää vastaanottajan julkisen avaimen jolla sähköposti salataan.
 
Ohjelmissa yleensä pystyy itse asettamaan LDAP-hakemistopuun alkuosan, base arvon (ldapsearch -b optio) ja mahdollisesti hakusuodattimen arvoja. Mutta nämä eivät riitä korjaamaan mail-attribuutin puutetta joka on kiinteästi osa ohjelmien toimintaa.
 
=== Sulkulista ===
$ ldapsearch -x -H ldap://ldap.fineid.fi -b dmdName=fineid,c=fi certificaterevocationlist
 
== HTTP-kyselyt ==
 
=== Sulkulista ===
* http://proxy.fineid.fi/crl/vrkcqcc.crl ?
 
 
=== Varmennehierarkia ===
 
https://dvv.fineid.fi/api/v1/cas/100/people?serialNumber=10000350X
https://dvv.fineid.fi/api/v1/cas/100/people?mail=juha.tuomala%40iki.fi
 
[{
"dn":
"certificateSerialNumber=1002703297,
cn=VRK Gov. CA for Citizen Qualified Certificates - G2,
ou=Valtion kansalaisvarmenteet,o=Vaestorekisterikeskus CA,dmdName=FINEID,c=FI",
"givenName":"JUHA",
"sn":"TUOMALA",
"mail":"juha.tuomala@iki.fi",
"serialNumber":"10000350X",
"certificateSerialNumber":"1002703297",
"certificateSerialNumberHex":"3bc409c1"
}]
 
Varmenteen lataus palauttaa DER-muotoisen binäärisen varmenteen.
https://dvv.fineid.fi/api/v1/people/certificateSerialNumber%3D1002703297%2Ccn%3DVRK%20Gov.%20CA%20for%20Citizen%20Qualified%20Certificates%20-%20G2%2Cou%3DValtion%20kansalaisvarmenteet%2Co%3DVaestorekisterikeskus%20CA%2CdmdName%3DFINEID%2Cc%3DFI/certificate
== Katso myös ==
* [[VäestörekisterikeskusDigivirasto]] pääsivu perustietoineen.
* [[SCS]]
* [https://github.com/vrk-kpa github.com/vrk-kpa]
* [http://developer.fineid.fi developer.fineid.fi]
* [https://dvv.fi/en/fineid-specifications dvv.fi fineid specifications]
* [https://www.openldap.org/software/man.cgi?query=ldapsearch openldap.org - ldapsearch(1) man page]
[[Luokka:Tekniikka|D]]

Navigointivalikko