Erinevus lehekülje "Sertifikaadid" redaktsioonide vahel

Allikas: Kuutõrvaja
(Kustutatud lõigud, mis peaksid kuuluma kas SSH või veebiserveri pala juurde)
 
(ei näidata 3 kasutaja 25 vahepealset redaktsiooni)
1. rida: 1. rida:
Juhendi kasutamiseks on vajalik [http://www.openssl.org/ OpenSSL] ver 0.9.7 või uuem.
+
Kõnekeeli öeldakse sertifikaadi kohta mugavalt "sert" ehk mitmuses "serdid".
 +
 
 +
Juhendi kasutamiseks on vajalik [http://www.openssl.org/ OpenSSL] ver 1.1.1 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.
 
Oletame, et meil on 2 asutust: sertifitseerimiskeskuse rollis "AS AgentuurC" ja teine asutus "OÜ Kasutaja", kes tahab oma veebi- või postiserverile sertifikaati.
7. rida: 9. rida:
 
Tekita CA võtmed
 
Tekita CA võtmed
  
  $ openssl genrsa -des3 -out ca.key 2048
+
  $ openssl genrsa -des3 -out ca.key 4096
  
 
Allkirjasta CA sertifikaat iseendaga
 
Allkirjasta CA sertifikaat iseendaga
  
  openssl req -new -x509 -days 1095 -key ca.key -out ca.crt
+
  $ openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -addext "keyUsage=critical,cRLSign,keyCertSign"
 
  EE
 
  EE
 
  .
 
  .
24. rida: 26. rida:
 
Tekita kasutaja võtmed
 
Tekita kasutaja võtmed
  
  $ openssl genrsa -out kasutaja.key 1024
+
  $ openssl genrsa -out kasutaja.key 2048
  
 
Tekita sertifikaadi allakirjutamise päring ja saada see (.csr fail) CA-le
 
Tekita sertifikaadi allakirjutamise päring ja saada see (.csr fail) CA-le
  
  # openssl req -new -key kasutaja.key -out kasutaja.csr
+
  $ openssl req -new -key kasutaja.key -out kasutaja.csr
 
  EE
 
  EE
 
  .
 
  .
37. rida: 39. rida:
 
  info@oukasutaja.ee
 
  info@oukasutaja.ee
  
CA allkirjastab sertifikaadi
+
CA uurib päringut ja allkirjastab sertifikaadi
  
  $ openssl x509 -req -sha1 -days 1095 -CA ca.crt -CAkey ca.key -CAcreateserial \
+
$ openssl req -text -noout -in kasutaja.csr
 +
...
 +
  $ openssl x509 -req -days 1095 -CA ca.crt -CAkey ca.key -CAcreateserial \
 
  -out kasutaja.crt -in kasutaja.csr
 
  -out kasutaja.crt -in kasutaja.csr
  
 
===Kui masinal on mitu nime===
 
===Kui masinal on mitu nime===
  
Tekita sertifikaadi laiendusfail cext.txt (ja saada ta koos .csr failiga CA-le)
+
Tekita sertifikaadi laiendusfail cext.txt ja saada ta koos .csr failiga CA-le
  
  cat > cext.txt <<EOE
+
  $ cat cext.txt
 
  subjectAltName = DNS:www.oukasutaja.ee,DNS:mail.oukasutaja.ee
 
  subjectAltName = DNS:www.oukasutaja.ee,DNS:mail.oukasutaja.ee
 
  basicConstraints = critical,CA:FALSE
 
  basicConstraints = critical,CA:FALSE
EOE
 
  
 
CA allkirjastab sertifikaadi ja lisab laiendused
 
CA allkirjastab sertifikaadi ja lisab laiendused
  
  openssl x509 -req -sha1 -days 1095 -CA ca.crt -CAkey ca.key -CAcreateserial \
+
  $ openssl x509 -req -sha256 -days 1095 -CA ca.crt -CAkey ca.key -CAcreateserial \
 
  -out kasutaja.crt -in kasutaja.csr -extfile cext.txt
 
  -out kasutaja.crt -in kasutaja.csr -extfile cext.txt
  
59. rida: 62. rida:
  
 
  $ openssl x509 -noout -text -in kasutaja.crt
 
  $ openssl x509 -noout -text -in kasutaja.crt
 +
 +
===Sertifikaadi tühistamine===
 +
 +
Vaja on tühistada üks kasutajasertifikaat
 +
 +
$ openssl ca -config ca.conf -revoke taotlused/kasutaja.crt
 +
 +
Mis tekitab index.txt faili kirje (seal on näha R tähte õige rea ees, mis tähendab revoked)
 +
 +
$ openssl ca -gencrl -out "crl.pem" -config ca.conf
 +
 +
Mis tekitab crl.pem faili mida meil vaja. Configuratsioonifail ca.conf ise võiks olla järgnev
 +
 +
 +
  [ ca ]
 +
  default_ca      = CA_default            # The default ca section
 +
 
 +
  [ CA_default ]
 +
  dir            = ./              # top dir
 +
  database      = index.txt        # index file.
 +
  new_certs_dir  = newcerts        # new certs dir
 +
 
 +
  certificate            = ca.crt      # The CA cert
 +
  private_key            = ca.key # CA private key
 +
 
 +
  default_days  = 1024                  # how long to certify for
 +
  default_crl_days= 30                  # how long before next CRL
 +
  default_md    = md5                  # md to use
 +
 +
  policy        = policy_any            # default policy
 +
  email_in_dn    = no                    # Don't add the email into cert DN
 +
 +
  name_opt      = ca_default            # Subject name display option
 +
  cert_opt      = ca_default            # Certificate display option
 +
  copy_extensions = none                # Don't copy extensions from request
 +
 +
  [ policy_any ]
 +
  countryName            = supplied
 +
  stateOrProvinceName    = optional
 +
  organizationName      = optional
 +
  organizationalUnitName = optional
 +
  commonName            = supplied
 +
  emailAddress          = optional
 +
 +
Näiteks OpenVPNi puhul tuleb tekkinud crl.pem lisada configuratsiooni järgnevalt
 +
 +
crl-verfiy crl.pem
 +
 +
Selle faili sisu vaatamiseks on käsk
 +
 +
$ openssl crl -in crl.pem  -noout -text
  
 
===Iseallkirjastatud sertifikaat===
 
===Iseallkirjastatud sertifikaat===
  
Lihtsamatel juhtudel võib kasutaja pruukida iseallkirjastatud sertifikaate (''self-signed certificate'')
+
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.
  
$ openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -keyout kasutaja.crt -out kasutaja.crt
+
Üldiselt on soovitatav jätta serverite võtmed ilma täiendava krüpteerimiseta ning kasutaja sertifikaadid (nt VPN jms jaoks) krüpteerida, kuna kasutajate võtmed võivad kergemini kompromiteeruda. Serverite puhul on vaja aga sageli teenuseid automaatselt või kaugelt restartida ning sel juhul pole võimalik pidevalt võtit sisestada.

Viimane redaktsioon: 1. oktoober 2019, kell 09:57

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

Juhendi kasutamiseks on vajalik OpenSSL ver 1.1.1 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

$ openssl genrsa -des3 -out ca.key 4096

Allkirjasta CA sertifikaat iseendaga

$ openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -addext "keyUsage=critical,cRLSign,keyCertSign"
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 -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 -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

Sertifikaadi tühistamine

Vaja on tühistada üks kasutajasertifikaat

$ openssl ca -config ca.conf -revoke taotlused/kasutaja.crt 

Mis tekitab index.txt faili kirje (seal on näha R tähte õige rea ees, mis tähendab revoked)

$ openssl ca -gencrl -out "crl.pem" -config ca.conf

Mis tekitab crl.pem faili mida meil vaja. Configuratsioonifail ca.conf ise võiks olla järgnev


 [ ca ]
 default_ca      = CA_default            # The default ca section
 
 [ CA_default ]
 dir            = ./              # top dir
 database       = index.txt        # index file.
 new_certs_dir  = newcerts         # new certs dir
  
 certificate             = ca.crt       # The CA cert
 private_key             = ca.key # CA private key
 
 default_days   = 1024                   # how long to certify for
 default_crl_days= 30                   # how long before next CRL
 default_md     = md5                   # md to use

 policy         = policy_any            # default policy
 email_in_dn    = no                    # Don't add the email into cert DN

 name_opt       = ca_default            # Subject name display option
 cert_opt       = ca_default            # Certificate display option
 copy_extensions = none                 # Don't copy extensions from request

 [ policy_any ]
 countryName            = supplied
 stateOrProvinceName    = optional
 organizationName       = optional
 organizationalUnitName = optional
 commonName             = supplied
 emailAddress           = optional

Näiteks OpenVPNi puhul tuleb tekkinud crl.pem lisada configuratsiooni järgnevalt

crl-verfiy crl.pem

Selle faili sisu vaatamiseks on käsk

$ openssl crl -in crl.pem  -noout -text

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 soovitatav jätta serverite võtmed ilma täiendava krüpteerimiseta ning kasutaja sertifikaadid (nt VPN jms jaoks) krüpteerida, kuna kasutajate võtmed võivad kergemini kompromiteeruda. Serverite puhul on vaja aga sageli teenuseid automaatselt või kaugelt restartida ning sel juhul pole võimalik pidevalt võtit sisestada.