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]>.
'''Hakemiston hierarkia''':
ldapsearch -LLL -x -h H ldap://ldap.fineid.fi -b "" -s base objectclass=\* namingcontexts
dn:
namingcontexts: c=FI
'''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
serialnumber: 10000350X
'''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
#
'''Asioijan tunnistusvarmenteen sormenjäljen tulostus SATU-tunnuksella''':
$ ldapsearch -x -h 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 H ldap://ldap.fineid.fi -b dmdName=fineid,c=fi certificaterevocationlist
== HTTP-kyselyt ==
* [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]]