Avaliku võtme sertifikaat

**Avaliku võtme sertifikaat** ehk **digitaalsertifikaat** või **digisert** on elektrooniline dokument, mis seob avaliku krüptograafilise võtme selle omaniku või valdajaga. Sisuliselt on sertifikaat digitaalse maailma isikutunnistus, allkirjanäidis või ettevõtte pitsat. 

Sertifikaate kasutatakse digitaalsete allkirjade, autentimise ja krüpteerimise lahendustes avalike võtmete turvaliseks levitamiseks. Nende abil saab kontrollida digitaalse allkirja kehtivust või tuvastada, kes on võrguühenduse teine osapool. Sertifikaadi omanik võib olla nii füüsiline isik kui ka ettevõte/asutus. Sertifikaate annavad välja sertifitseerimisteenuse osutajad, kes kontrollivad sertifikaadi väljastamisel sertifikaadi omaniku isikut ja volitusi ning loovad seeläbi usalduse krüptovõtmete ja reaalselt eksisteerivate inimeste või organisatsioonide vahel. 

Sertifikaatide väljaandmise ja levitamise süsteemi ning vastavat tehnoloogiat nimetatakse avaliku võtme taristuks. Sertifikaate kasutav krüptograafia haru, mis võimaldab sertifikaate, digiallkirju jne luua ja kontrollida, on avaliku võtmega krüptograafia. 

### Sertifikaatide sisu
Sertifikaadis on kirjas:

* Sertifikaadi omaniku info: inimese nimi, identifikaator või pseudonüüm; ettevõtte andmed; e-posti aadress või muu kasutajale viitav informatsioon
* Avalik krüptograafiline võti (krüptovõti), mille kontrollimiseks sertifikaat väljastatakse
* Sertifikaadi kehtivusaeg
* Sertifikaadi kasutusvaldkonnad
* Sertifikaadi kehtivuse kontrollimiseks vajalik tehniline informatsioon
* Sertifitseerimisteenuse osutaja andmed
* Sertifitseerimisteenuse osutaja digiallkiri

Sertifikaatides olevat infot võib üldiselt käsitleda avaliku informatsioonina. Avalike veebiserverite sertifikaatide infot koguvad ja avaldavad ''Certificate Transparency'' raamistikus osalevad ettevõtted. See tähendab, et ka näiteks ettevõtte sisemiste veebiserverite ja teenuste TLS-sertifikaadid on enamasti avalikud. Sõnumite krüpteerimiseks mõeldud sertifikaadid peavad olema sõnumi saatjale vabalt leitavad, see aga eeldab otsingut sõnumi saaja nime või muude atribuutide alusel. Eesti ID-sertifikaatides on sees isikukood. Selle privaatsuse või tundlikkuse taseme üle on korduvalt vaieldud ning vastavaid lahendusi on aja jooksul muudetud. 

### Sertifikaatide tüübid
Põhilised sertifikaatide tüübid on järgmised:

* Eraisikute sertifikaadid, näiteks Eesti ID-kaartide sertifikaadid
* Veebiserverite sertifikaadid, näiteks Vikipeedia veebiserveri sertifikaat
* Sertifitseerimisteenuse osutajate vahe- ja juursertifikaadid
* TLS-protokolli klientide sertifikaadid, näiteks virtuaalsete privaatvõrkude kasutajate sertifikaadid
* E-posti kasutajate sertifikaadid
* Tarkvara signeerimiseks kasutatavad arendusettevõtete sertifikaadid

Igas sertifikaatide kategoorias on omad alamtüübid. Nii erinevad veebiserverite sertifikaadid näiteks selle järgi, kui hoolikalt on sertifikaadi väljaandja kontrollinud ettevõtte olemasolu ja sertifikaadi küsija volitusi. Euroopa Liidus välja antud isikusertifikaatide tüüpe ja kategooriaid kirjeldab ja reguleerib eIDAS määrus. 

### Sertifikaatide välja andmine, levitamine, tühistamine ja kontrollimine
Sertifikaate annavad välja sertifitseerimisteenuse osutajad. Enamasti on tegemist suurte või usaldusväärsete ettevõtetega, mille tegevust reguleerivad rahvusvahelised standardid, seadused ja lepingud. Samad ettevõtted pakuvad ka võimalust sertifikaate tühistada (näiteks juhul, kui selle omanik on surnud või ettevõttena likvideeritud), ajutiselt peatada ning nende olemasolu ja kehtivust kontrollida. Vastavad teenused, protsessid ja nende reeglid on enamasti formaalselt kirjas teenusepakkujate ametlikes dokumentides: sertifitseerimispoliitikas, sertifikaatide profiilis jne. 

Sertifikaatide ja üldisemalt avalike võtmete haldusega tegelev valdkond on avaliku võtme taristu, inglise keeles ''Public Key Infrastructure'' (PKI). 

### Salajaste võtmete haldus
Sertifikaatide ja nendel põhinevate tegevuste turvalisus põhineb eeldusel, et avalikule võtmele vastav salajane ehk isiklik võti on turvaliselt hoitud. Isiklike võtmete haldus ja selle jaoks vajalikud lahendused on avaliku võtme krüptosüsteemide kasutamisel kõige keerulisem takistus. Tugeva turvalisuse jaoks peab isiklik võti olema kas spetsiaalses riistvaralises seadmes (näiteks kiipkaart või riistvaraline turvamoodul) või pääsufraasiga kaitstud. 

Sertifitseerimisteenuse osutajad võivad seada võtmehaldusele oma spetsiifilisi nõudeid. Näiteks Eesti ID-kaardi sertifikaate tohib anda vaid ID-kaardis loodud isiklikele võtmetele vastavate avalike võtmete jaoks, samuti peab SK kui sertifitseerimisteenuse osutaja enda signeerimisvõti olema riistvaraliselt kaitstud.

### Sertifikaatide vormingud ja näidis
Kõige levinum tänapäevane sertifikaatide vorming on X.509. See keeruline, kuid paindlik formaat võimaldab levitada erinevate krüptograafiliste algoritmide (RSA, DSA, elliptiliste kõverate krüptosüsteemid jne) avalikke võtmeid. Eraldi andmeväljade ja laienduste kaudu saab lisada mistahes infot sertifikaadi omaniku, väljaandja, kasutuspiirangute ja muu kohta. 

Inimloetava tekstina esitamiseks salvestatakse sertifikaadid enamasti Base4-kodeeritud PEM-vormingus failina. 

Näide: Wikipedia veebiserveri sertifikaat 2022. aasta alguses. Sertifikaadi on välja andnud "Digicert Inc" ja see on antud "Wikimedia Foundation, Inc." nimelisele organisatsioonile. Selle kehtivusaeg on peaaegu 13 kuud. SubjectAltName laiendus näitab, et sama sertifikaati (ja sellele vastavat võtmepaari) võib kasutada mitukümmend serverit Wikipedia eri domeenides.


```
Version:          3 (0x02)
Serial number:    3310497047411526733060757196035552318 (0x027d941b292cdb2edaf993111853743e)
Algorithm ID:     SHA384withECDSA
Validity
  Not Before:     19/10/2021 00:00:00 (dd-mm-yyyy hh:mm:ss) (211019000000Z)
  Not After:      17/11/2022 23:59:59 (dd-mm-yyyy hh:mm:ss) (221117235959Z)
Issuer
  C  = US
  O  = DigiCert Inc
  CN = DigiCert TLS Hybrid ECC SHA384 2020 CA1
Subject
  C  = US
  ST = California
  L  = San Francisco
  O  = Wikimedia Foundation, Inc.
  CN = *.wikipedia.org
Public Key
  Algorithm:      EC
  Curve Name:     secp256r1
  Length:         256 bits
  pub:            04:e8:50:2c:d0:d2:4e:a2:b1:92:aa:b6:73:0f:cf:a0:
                  b4:57:e5:c2:c0:7c:ae:6e:55:91:4a:a6:94:67:fa:a5:
                  f8:b0:3f:46:ac:23:52:b4:48:3b:64:64:fb:ea:cd:e9:
                  e4:fb:8f:10:a7:f4:e8:23:ba:95:29:6e:ef:ca:72:bb:
                  83
Certificate Signature
  Algorithm:      SHA384withECDSA
  r:              00:cd:aa:e8:16:18:0b:5e:de:24:bc:44:76:f3:a3:e5:
                  1e:a5:03:19:52:7e:fe:57:2c:0b:fe:e2:af:b4:67:3e:
                  6a:82:08:36:ce:01:60:30:8b:5b:a3:4e:50:27:1f:de:
                  02
  s:              fe:57:2c:0b:fe:e2:af:b4:67:3e:6a:82:08:36:ce:01:
                  60:30:8b:5b:a3:4e:50:27:1f:de:02:02:31:00:8e:fb:
                  20:28:7e:b5:cf:df:1f:90:99:09:83:b0:77:70:6f:e0:
                  94:3f:9d:59:7d:ca:6c:21:69:2e:69:d2:cc:0f:e9:ac:
                  53:c4:93:c2:9c:d6:83:96:e5:73:39:72:7d:9c

Extensions
  authorityKeyIdentifier :
    kid=0abc0829178ca5396d7a0ece33c72eb3edfbc37a
  subjectKeyIdentifier :
    89258ef185f97f5cd18714984a5ef41c321d5144
  subjectAltName :
    dns:*.wikipedia.org,dns:wikimedia.org,dns:mediawiki.org,dns:wikibooks.org,dns:wikidata.org,dns:wikinews.org,dns:wikiquote.org,dns:wikisource.org,
dns:wikiversity.org,dns:wikivoyage.org,dns:wiktionary.org,dns:wikimediafoundation.org,dns:w.wiki,dns:wmfusercontent.org,dns:*.m.wikipedia.org,dns:*.wikimedia.org,
dns:*.m.wikimedia.org,dns:*.planet.wikimedia.org,dns:*.mediawiki.org,dns:*.m.mediawiki.org,dns:*.wikibooks.org,dns:*.m.wikibooks.org,dns:*.wikidata.org,
dns:*.m.wikidata.org,dns:*.wikinews.org,dns:*.m.wikinews.org,dns:*.wikiquote.org,dns:*.m.wikiquote.org,dns:*.wikisource.org,dns:*.m.wikisource.org,
dns:*.wikiversity.org,dns:*.m.wikiversity.org,dns:*.wikivoyage.org,dns:*.m.wikivoyage.org,dns:*.wiktionary.org,dns:*.m.wiktionary.org,
dns:*.wikimediafoundation.org,dns:*.wmfusercontent.org,dns:wikipedia.org
  keyUsage CRITICAL:
    digitalSignature
  extKeyUsage :
    serverAuth, clientAuth
  cRLDistributionPoints :
    http://crl3.digicert.com/DigiCertTLSHybridECCSHA3842020CA1-1.crl
    http://crl4.digicert.com/DigiCertTLSHybridECCSHA3842020CA1-1.crl
  certificatePolicies :
    policy oid: 2.23.140.1.2.2
    cps: http://www.digicert.com/CPS
  authorityInfoAccess :
    ocsp: http://ocsp.digicert.com
    caissuer: http://cacerts.digicert.com/DigiCertTLSHybridECCSHA3842020CA1-1.crt
  basicConstraints CRITICAL:
    {}
  1.3.6.1.4.1.11129.2.4.2 :
```


## Vaata ka

* Avaliku võtmega krüptograafia
* Avaliku võtme taristu
* Avaliku võtme sertifikaat (''public key_certificate'') ingliskeelses Wikipedias
* X.509 standard ingliskeelses Wikipedias

## Viited