Ero sivun ”Tekniikka/Digivirasto” versioiden välillä
(6 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
− | Digiviraston tietoja voi hyödyntää palveluita rakentaessa. Julkisesti avoimena | + | '''Digiviraston''' tietoja voi hyödyntää palveluita rakentaessa. Julkisesti avoimena ovat: |
+ | * varmennehakemisto josta voi tehdä kyselyitä LDAP-protokollalla | ||
+ | * varmenteiden sulkulista jonka voi ladata HTTP-protokollalla | ||
+ | |||
== LDAP varmennehakemisto == | == LDAP varmennehakemisto == | ||
− | LDAP-hakemiston kyselyitä voi tehdä [[Digivirasto]]n järjestelmästä anonyymisti ja osa ([[VTJ|väestötietojärjestelmä]],) vaatii sopimuksen ja pääsyoikeudet. | + | LDAP-hakemiston kyselyitä voi tehdä [[Digivirasto]]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 -attribuuttia. Jos henkilöllä ei ole henkilökorttia ja sen 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]>. | Hakemistohierarkian ja kyselyiden kanssa avusti LDAP-asiantuntija Timo Kirves <[mailto:timo@omit.fi timo@omit.fi]>. | ||
Rivi 9: | Rivi 14: | ||
'''Hakemiston hierarkia''': | '''Hakemiston hierarkia''': | ||
− | ldapsearch -LLL -x - | + | ldapsearch -LLL -x -H ldap://ldap.fineid.fi -b "" -s base objectclass=\* namingcontexts |
dn: | dn: | ||
namingcontexts: c=FI | namingcontexts: c=FI | ||
Rivi 29: | Rivi 34: | ||
'''Common Name (CN) haku SATU-tunnuksella''': | '''Common Name (CN) haku SATU-tunnuksella''': | ||
− | $ ldapsearch -x - | + | $ ldapsearch -x -H ldap://ldap.fineid.fi -b dmdName=fineid,c=fi serialNumber=10000350X cn |
cn: TUOMALA JUHA 10000350X | cn: TUOMALA JUHA 10000350X | ||
'''SATU-tunnuksen haku etu- ja sukunimen perusteella, poiskytketyllä määrärajoitteella''': | '''SATU-tunnuksen haku etu- ja sukunimen perusteella, poiskytketyllä määrärajoitteella''': | ||
− | $ ldapsearch -x - | + | $ ldapsearch -x -H ldap://ldap.fineid.fi -LLL -b dmdName=fineid,c=fi -z 0 "(&(givenname=Juha)(sn=Tuomala))" serialnumber |grep serial|sort -n |
serialnumber: 10000350X | serialnumber: 10000350X | ||
Rivi 44: | Rivi 49: | ||
'''Käyttäjän varmenteen haku SATU-tunnuksella''': | '''Käyttäjän varmenteen haku SATU-tunnuksella''': | ||
− | $ ldapsearch -x - | + | $ ldapsearch -x -H ldap://ldap.fineid.fi -b dmdName=fineid,c=fi serialnumber=10000350X usercertificate |
# extended LDIF | # extended LDIF | ||
# | # | ||
Rivi 101: | Rivi 106: | ||
'''Asioijan tunnistusvarmenteen sormenjäljen tulostus SATU-tunnuksella''': | '''Asioijan tunnistusvarmenteen sormenjäljen tulostus SATU-tunnuksella''': | ||
− | $ ldapsearch -x - | + | $ 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 | 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 === | === Sulkulista === | ||
− | $ ldapsearch -x - | + | $ ldapsearch -x -H ldap://ldap.fineid.fi -b dmdName=fineid,c=fi certificaterevocationlist |
− | |||
== HTTP-kyselyt == | == HTTP-kyselyt == | ||
Rivi 114: | Rivi 140: | ||
=== Sulkulista === | === Sulkulista === | ||
* http://proxy.fineid.fi/crl/vrkcqcc.crl ? | * 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 == | == Katso myös == | ||
Rivi 122: | Rivi 170: | ||
* [https://github.com/vrk-kpa github.com/vrk-kpa] | * [https://github.com/vrk-kpa github.com/vrk-kpa] | ||
* [http://developer.fineid.fi developer.fineid.fi] | * [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] | * [https://www.openldap.org/software/man.cgi?query=ldapsearch openldap.org - ldapsearch(1) man page] | ||
[[Luokka:Tekniikka|D]] | [[Luokka:Tekniikka|D]] |
Nykyinen versio 28. huhtikuuta 2024 kello 10.57
Digiviraston tietoja voi hyödyntää palveluita rakentaessa. Julkisesti avoimena ovat:
- varmennehakemisto josta voi tehdä kyselyitä LDAP-protokollalla
- varmenteiden sulkulista jonka voi ladata HTTP-protokollalla
Sisällysluettelo
LDAP varmennehakemisto
LDAP-hakemiston kyselyitä voi tehdä Digiviraston järjestelmästä anonyymisti ja osa (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 -attribuuttia. Jos henkilöllä ei ole henkilökorttia ja sen 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 <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ökorttia tai Mobiilivarmennetta.
Common Name (CN) haku SATU-tunnuksella:
$ ldapsearch -x -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 ldap://ldap.fineid.fi -LLL -b dmdName=fineid,c=fi -z 0 "(&(givenname=Juha)(sn=Tuomala))" serialnumber |grep serial|sort -n serialnumber: 10000350X serialnumber: 11921353S serialnumber: 12346428V serialnumber: 12668514R serialnumber: 130409648 serialnumber: 13321775N $
Käyttäjän varmenteen haku SATU-tunnuksella:
$ ldapsearch -x -H ldap://ldap.fineid.fi -b dmdName=fineid,c=fi serialnumber=10000350X usercertificate # extended LDIF # # LDAPv3 # base <dmdName=fineid,c=fi> with scope subtree # filter: serialnumber=10000350X # requesting: usercertificate # # 1002703297, VRK Gov. CA for Citizen Qualified Certificates - G2, Valtion kans alaisvarmenteet, Vaestorekisterikeskus CA, FINEID, FI dn: certificateSerialNumber=1002703297,cn=VRK Gov. CA for Citizen Qualified Ce rtificates - G2,ou=Valtion kansalaisvarmenteet,o=Vaestorekisterikeskus CA,dmd Name=FINEID,c=FI usercertificate;binary:: MIIHMjCCBRqgAwIBAgIEO8QJwTANBgkqhkiG9w0BAQsFADCBlDELM AkGA1UEBhMCRkkxITAfBgNVBAoTGFZhZXN0b3Jla2lzdGVyaWtlc2t1cyBDQTEkMCIGA1UECxMbVm FsdGlvbiBrYW5zYWxhaXN2YXJtZW50ZWV0MTwwOgYDVQQDEzNWUksgR292LiBDQSBmb3IgQ2l0aXp lbiBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIC0gRzIwHhcNMTYwNjE0MDkxMzAxWhcNMjEwNjEzMjA1 OTU5WjBjMQswCQYDVQQGEwJGSTESMBAGA1UEBRMJMTAwMDAzNTBYMQ0wCwYDVQQqEwRKVUhBMRAwD gYDVQQEEwdUVU9NQUxBMR8wHQYDVQQDExZUVU9NQUxBIEpVSEEgMTAwMDAzNTBYMIIBIjANBgkqhk iG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs46ymqJIS49++jTDWAqhqpvOTsGPfuM6fkNS4qio1y2r6fb kLnMd/+tSPyER3r81mDmOUO0+N5ytAJYQW73ZyMmbhDD3wgU8JJ0L4HdNlaDrlDk1+SegvfkpTiG/ J1IKr1FcozB3L3mbz3REArJf+gNqPjl72n1htQuyJmP5P9GQnQEovy9C5Fs0Q5EyMRx6lloLyZ55B rnBSRAa1FNSKFTaD0lLSSdsXkh/xyj5/mxDOce/HtM7JOCZs1odf7PVvZ69dOWz8avsUZFRia+B+U ItSBZTfX5ZxN2ntcVh8Dr7uoSbu/GA3SNnO4wpagAu5kWI0u42sT8fYc7FewRFCQIDAQABo4ICujC CArYwHwYDVR0jBBgwFoAUwa8dil8dmocNghD8nd31sB5w07UwHQYDVR0OBBYEFNukvpTRN+niaUxl j5w8lHmmrJRDMA4GA1UdDwEB/wQEAwIEsDCBzQYDVR0gBIHFMIHCMIG/BgkqgXaEBQEKFgEwgbEwJ wYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZmluZWlkLmZpL2NwczIxLzCBhQYIKwYBBQUHAgIweRp3Vm FybWVubmVwb2xpdGlpa2thIG9uIHNhYXRhdmlsbGEgLSBDZXJ0aWZpa2F0IHBvbGljeSBmaW5ucyA tIENlcnRpZmljYXRlIHBvbGljeSBpcyBhdmFpbGFibGUgaHR0cDovL3d3dy5maW5laWQuZmkvY3Bz MjEwHgYDVR0RBBcwFYETanVoYS50dW9tYWxhQGlraS5maTAPBgNVHRMBAf8EBTADAQEAMIIBHgYDV R0fBIIBFTCCAREwLaAroCmGJ2h0dHA6Ly9wcm94eS5maW5laWQuZmkvY3JsL3Zya2NxYzJjLmNybD CB36CB3KCB2YaB1mxkYXA6Ly9sZGFwLmZpbmVpZC5maTozODkvY24lM2RWUkslMjBHb3YuJTIwQ0E lMjBmb3IlMjBDaXRpemVuJTIwUXVhbGlmaWVkJTIwQ2VydGlmaWNhdGVzJTIwLSUyMEcyLG91JTNk VmFsdGlvbiUyMGthbnNhbGFpc3Zhcm1lbnRlZXQsbyUzZFZhZXN0b3Jla2lzdGVyaWtlc2t1cyUyM ENBLGRtZE5hbWUlM2RGSU5FSUQsYyUzZEZJP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3QwQQYIKw YBBQUHAQEENTAzMDEGCCsGAQUFBzAChiVodHRwOi8vcHJveHkuZmluZWlkLmZpL2NhL3Zya2NxYzI uY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQBbZIjniOVftnKZ0/hvIdVRH9iM2FMVlcAMEja7nN3ji8zv CgMPD++TFmIsnR4HhapBsgIKbDBaGqhTuIqZdezYcVImE32wGY+YkQqEKrCI+uB8+p7SsvMnl/eGk C8q+lDCm5JzqX+ifR8G4Pgoznj5io+loarR2uR+pqm4BybP2bTNPMYwLPyKc36MnBZ9aQxtzfgjsH gjsA/L3vI93Dn4DlOrfE5VN8+jJOINXh31xm8W/WJVBHTHA3FW2tgSLJtw7SIpofMNBoU6f/u/xdo 0fSKvA5p30oooAPFAQa3Fb9oAOdWVTbX/dT4sQ3HPvmxjsGeX36QYwkbb/FfEn4So3OH5D1zRmWw/ Q0vWYCS2YcWJY8sQvLhNcwI3ztu5/h7GAGvSuwsPtBgczHM6Db+MUogDmmTQrdKMlYWvCsVEd2Ugf FNcPfM/FJ22pAaTPGhQEI5kVKrx7Zy88mVZnG8+5+TXHwKZK9zCTder4TrS6moOWt74vSoxrbUhw4 EBMlOeLRsd1jbPTxs18hJGu0iKub6X2IgDVtmIiQClOj5VKv+0Pcz6Jc5DLNhTgYwMVbXOHwge7tj 3ja89p7Sa/nfud29CF9OJBSi2KxyvbBJ42ckAdcNDoe/zis/v6aDHqaP/hqSRGLTmrEpaFVeuakkB GUKqVbkcaEiw8YkWh9S1qQ== # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
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
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
- Digivirasto pääsivu perustietoineen.
- SCS