Sertifikaadid
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.
Sisukord
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üpteerida või mittekrüpteerida võtit?
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