Sertifikaadid

Allikas: Kuutõrvaja
Redaktsioon seisuga 7. jaanuar 2015, kell 14:57 kasutajalt Jj (arutelu | kaastöö) (Krüpteeritud võti või ei?)

Kõnekeeli öeldakse sertifikaadi kohta mugavalt "sert" ehk mitmuses "serdid".

Juhendi kasutamiseks on vajalik OpenSSL ver 0.9.7 või uuem.

Oletame, et meil on 2 asutust: sertifitseerimiskeskuse rollis "AS AgentuurC" ja teine asutus "OÜ Kasutaja", kes tahab oma veebi- või postiserverile sertifikaati.

CA, ehk sertifitseerimiskeskuse tekitamine

Tekita CA võtmed (2011 seisuga on soovituslik kasutada 2048-bitist RSA võtit)

$ openssl genrsa -des3 -out ca.key 2048

Allkirjasta CA sertifikaat iseendaga

$ openssl req -new -x509 -sha256 -days 1095 -key ca.key -out ca.crt
EE
.
Tallinn
AS AgentuurC
.
AgentuurC Test Root CA
helpdesk@agentuurc.ee

Kasutaja sertifikaadi tegemine

Tekita kasutaja võtmed

$ openssl genrsa -out kasutaja.key 2048

Tekita sertifikaadi allakirjutamise päring ja saada see (.csr fail) CA-le

$ openssl req -new -sha256 -key kasutaja.key -out kasutaja.csr
EE
.
Tartu
OÜ Kasutaja
Müügiosakond
www.oukasutaja.ee
info@oukasutaja.ee

CA uurib päringut ja allkirjastab sertifikaadi

$ openssl req -text -noout -in kasutaja.csr
...
$ openssl x509 -req -sha256 -days 1095 -CA ca.crt -CAkey ca.key -CAcreateserial \
-out kasutaja.crt -in kasutaja.csr

Kui masinal on mitu nime

Tekita sertifikaadi laiendusfail cext.txt ja saada ta koos .csr failiga CA-le

$ cat cext.txt
subjectAltName = DNS:www.oukasutaja.ee,DNS:mail.oukasutaja.ee
basicConstraints = critical,CA:FALSE

CA allkirjastab sertifikaadi ja lisab laiendused

$ openssl x509 -req -sha256 -days 1095 -CA ca.crt -CAkey ca.key -CAcreateserial \
-out kasutaja.crt -in kasutaja.csr -extfile cext.txt

Sertifikaadi sisu vaatamine

$ openssl x509 -noout -text -in kasutaja.crt

Iseallkirjastatud sertifikaat

Lihtsamal juhul võib pruukida iseallkirjastatud sertifikaati (i.k. self-signed certificate)

$ openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -keyout kasutaja.key -out kasutaja.crt

Kui skriptimisel on vaja vältida konsoolilt pärimist, saab parameetrid kõik käsureal anda

$ openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -keyout kasutaja.key -out kasutaja.crt -subj "/C=EE/ST=/L=Tartu/O=Kasutaja/CN=www.oukasutaja.ee" -batch

Krüpteeritud võti või ei?

Krüpteeritud võti tähendab põhimõtteliselt seda, kas kasutades enda privaatset võtit küsitakse täiendavat parooli või ei. Tavaliselt küsib openssl võtme genereerimise ajal parooli ning kui selle sisestamise asemel enterit vajutada jäetakse krüpteerimine tegemata.

Üldiselt on võiks olla parim selline lahendus, kus serverite võtmed on ilma täiendava krüpteerimiseta ning kasutaja sertifikaadid (nt VPN) jms jaoks on krüpteeritud, kuna kasutajate võtmed võivad kergemini kompromiteeruda, nt varastadakse läpakas ära vms. Et kontrollida, kas võtmel on kood (näitab ka õiguste probleemid, kui neid on)

# ssh-keygen -y -f kasutaja.key

-f annad siis faili ette, ilma selleta võtab kodukaustast .ssh/id_dsa või id_rsa, mis saadaval on.

Kui kood on/ei ole/tahad muuta

# ssh-keygen -p -f kasutaja.key