OpenSSL ja sertifikaadid

Ettevalmistus

Looge endale isiklik openssl töökeskkond: (eeldame edaspidi, et see asub /home/kasutaja/openssl)

$ mkdir openssl
$ cd openssl
$ cp /etc/ssl/openssl.cnf .
$ mkdir certs crl newcerts private
$ echo 01 > serial
$ touch index.txt
  • Muutke (isiklikku!) openssl.cnf faili:
    • CA_default sektsioonis: dir = meie_openssl_kataloog (täis teega!)
    • Muutke ära ka riiki/linna/jms puudutavad andmed (Country_default, ...)
    • Mitte muuta policy-t!
    • Ettevaatust - mitte murda pikki ridu!
  • Või tõmmake valmis fail praktikumi jaoks: openssl.cnf

Self-signed sertifikaat

Self-signed sertifikaadi tegemine: (kontrolli töökataloogi, kontrolli et oled "kasutaja"!)

$ openssl req -config /home/kasutaja/openssl/openssl.cnf -new -x509 -out sscert.pem

Vastake küsimustele sertifikaadile kantavate andmete kohta. OLULINE (XX on teie arvuti number):

Common Name (eg, YOUR name) [] = praksXX.test.mt.ut.ee

Uurige sertifikaati

$ openssl x509 -text < sscert.pem

Apache veebiserver ja SSL

Konfigureerige veebiserver SSL-i kasutama:

# apt-get install apache2
# cd /etc/apache2/mods-enabled
# ln -s /etc/apache2/mods-available/ssl.* .
# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start

Siin ei tohi ühtegi viga tulla - parandage, kuni ei tule.

Muutke Apache SSL virtuaalhosti konfiguratsioonifaili /etc/apache2/sites-available/default-ssl. Lisage rida: (näiteks kohe peale ServerAdmin webmaster@localhost rida)

ServerName praksXX.test.mt.ut.ee:443

ja muutke sertifikaadi ja võtme asukohad:

SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Lülitame Apache SSL virtuaalhosti toe sisse:

# cd /etc/apache2/sites-enabled
# ln -s /etc/apache2/sites-available/default-ssl .

Kopeerime sertifikaadi ja salajase võtme Apache kausta:

# mkdir /etc/apache2/ssl
# cd /home/kasutaja/openssl
# cp sscert.pem /etc/apache2/ssl/server.crt
# cp privkey.pem /etc/apache2/ssl/server.key
# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start

Apache peaks nüüd käivitamisel küsima salajase võtme parooli.

Testige 'openssl s_client' abil: (parandage kuni vigu ei esine ja saate teha GET / päringu)

$ openssl s_client -host MINUIP -port 443 -showcerts

Tekita /etc/hosts faili rida:

192.168.10.YYY praksXX.test.mt.ut.ee

Võta mozilla ja mine: https://praksXX.test.mt.ut.ee/ - Add Exception, uuri pakutud sertifikaati ja kontrolli kas see on sama, mille enne tegid! Kinnita erand. Võid proovida sama teha ka naabri serveriga (lisa enne /etc/hosts faili naabri IP ja nimi).

Pane browser kinni, ava uuesti, nüüd ei tohiks sertifikaadi üle enam kaebusi olla.

Uuri (Edit -> Preferences -> Advanced -> Encryption -> View Certificates -> Servers) all sertifikaate - leia sealt endaloodud sertifikaat. Kustuta sertifikaat.

Kustutame sertifikaadi ja võtme: (kontrolli, et oled "kasutaja")

$ cd /home/kasutaja/openssl
$ rm privkey.pem sscert.pem

Certification Authority (CA)

Tekitame CA. Common Name väärtuseks määrame Sertifitseerimiskeskus (parool peaks olema turvaline, paneme näiteks caparool)

$ openssl req -new -x509 -keyout /home/kasutaja/openssl/private/cakey.pem -out /home/kasutaja/openssl/cacert.pem -config /home/kasutaja/openssl/openssl.cnf

Tekitame sertifikaadipäringu. CommonName väärtuseks paneme: praksXX.test.mt.ut.ee

$ openssl req -new -keyout newkey.pem -out newreq.pem -days 360 -config /home/kasutaja/openssl/openssl.cnf

(ignoreeri (s.t. jäta tühjaks) "extra" attributes - challenge password ... )

Kasutades CA võtit väljastame sertifikaadi:

$ openssl ca -config /home/kasutaja/openssl/openssl.cnf -policy policy_anything -out newcert.pem -infiles newreq.pem

Kopeerime uued sertifikaadid Apache kausta:

# cp newcert.pem  /etc/apache2/ssl/server.crt
# cp newkey.pem  /etc/apache2/ssl/server.key
# cp cacert.pem /etc/apache2/ssl/cacert.crt

Muudame failis /etc/apache2/sites-enabled/default-ssl SSLCACertificateFile direktiivi: (vajadusel eemalda selle rea eest ka kommentaar)

SSLCACertificateFile /etc/apache2/ssl/cacert.crt

Apache restart:

# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start

Testi uuesti s_client abil, seejärel testi uuesti veebibrauseriga.

Kommenteeri sisse (s.t. eemalda kommentaar) ja muuda failis /etc/apache2/sites-enabled/default-ssl järgmised read:

SSLVerifyClient optional
SSLOptions +StrictRequire
SSLVerifyDepth 2
<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars +ExportCertData
</FilesMatch>

Restardi Apache.

Tekitame (rooduna) CGI skripti /usr/lib/cgi-bin/env.cgi sisuga:

#!/bin/bash

cat <<EOF
Content-type: text/html

<html>
<pre>
`env`
</pre>
</html>
EOF
exit 0

Pange chmod abil ka execute bitt (kõigile kasutajatele) ja testige, et töötab brauseris (https://praksXX.test.mt.ut.ee/cgi-bin/env.cgi).

Kliendisertifikaat

Tekitame kliendisertifikaadi. Kontrolli töökataloogi (/home/kasutaja/openssl), kontrolli, et oled "kasutaja", kopeeri ridasid ühekaupa!
Kliendi Common Name on nüüd füüsilise isiku nimi.

$ openssl req  -new -keyout klientkey.pem -out klient.pem  -days 360 -config /home/kasutaja/openssl/openssl.cnf
$ openssl ca -config /home/kasutaja/openssl/openssl.cnf  -policy policy_anything -out klientcert.pem  -infiles klient.pem
$ openssl pkcs12 -export -in klientcert.pem  -inkey klientkey.pem -certfile cacert.pem -name "test" -out test.p12

Impordime sertifikaadi (test.p12) brauserisse (Edit -> Preferences -> Advanced -> Encryption -> View certificates -> Your Certificates -> Import...) NB! Kui küsitakse, siis pange brauseri paroolihoidlale tühi parool!

Pange brauser kinni ja uuesti käima. Proovime uuesti env.cgi'd. CGI väljundisse peaks ilmuma info kliendiserdilt.

Praktikumi arvestuse saamiseks saatke oma praktikumi juhendajale meiliga brauserist tulnud SSL_CLIENT_S_DN rida.

Proovimiseks

Proovime cgi'd kõrvalmasinast, selleks muuda /etc/hosts faili!

Muudame SSLClientVerify - optional/require - ligi saab ainult meie CA poolt väljantud kliendisertifikaadiga.

Proovime uuesti kõrvalmasinast (genereeri naabri jaoks teine kliendi sertifikaat!

Uuri mis sertifikaatidega töötavad HTTPS veebiserverid: www.sk.ee, mailhost.ut.ee, www.swedbank.ee, www.seb.ee

Tekita tühistusnimikiri (CRL), õpeta seda veebiserverile, tühista kliendisertifikaat. Kontrolli, kas veebiserver sai aru.

Praktikumi lõpp

Kustutame sodi: eemaldage brauserist oma imporditud sertifikaat ning rooduna:

# dpkg --purge apache2
# apt-get autoremove --purge
# rm -rf /etc/apache2 /var/log/apache2
# rm -rf /home/kasutaja/openssl
Sidebar
Page edit