Erinevus lehekülje "Apache ssl" redaktsioonide vahel

Allikas: Kuutõrvaja
(Apache seadistus)
(Lisatud lingid)
 
(ei näidata 3 kasutaja 41 vahepealset redaktsiooni)
1. rida: 1. rida:
 
===Sissejuhatus===
 
===Sissejuhatus===
  
Apache ssl ajutise self-signed sertifikaadi genereerimine mis ei nõuaks parooli.
+
Alustame siiski eesmärgist: miks seda üldse hea teha on?
  
Installitud peaks eelnevalt olema openssl
+
Nagu öeldud on see seotud krüpteerimisega. Täpsemine, liiklus veebiserveri ja teine browseri vahel saab olema krüpteeritud. Antud juhul on selle tegemiseks vaja vähemalt veebiserveril omada public ja private keyd. Antud kontekstis nimetatakse serveri public key'd ka serveri sertifikaadiks. Niisiis, kui firefox külstab seda serverit, siis
  
 +
*antakse talle serveri avalik võti (mille sisu pole põhimõtteliselt kellegile saladus)
 +
*seejärel loob browser ilmselt midagi session key sarnast ning saadab servery public key'ga krüpteeritult session key serverile
 +
*seda saadetist ei saa keegi peale vastava private key lahti võtta - st .ainult server
 +
 +
Tulemusena on mõlemad pooled kokku leppinud sümmeetrilise võtme millega edaspidi andmevahetust krüpteeritakse.
 +
 +
Sertifikaatide juures on kaks võimalust. Üks on luua isesigneeritud ehk self-signed
 +
sertifikaat. Sellisel juhul tekitab kasutaja ise nii sertifikaadi taotluse kui ka signeerib
 +
selle ise.
 +
 +
Teine võimalus on tekitada sertifikaadi taotlus ja lasta see allkirjastada mõnel tunnustatud teenusepakkujal. Sedalaadi sertifikaate nimetatakse ka popup-free sertifikaatideks, seda kuna browserid ei kuva nende sertifikaatide juures hoiatavaid tekste enne veebile sisenemist, nii nagu
 +
nad teevad seda self-signed sertidega.
 +
 +
Ühe sellise 'instansi'ina tegutseb näiteks organisatsioon Verysign. Haridus, teadus ja kultuuriasutused saavad lasta enda taotlusi signeerida EENetil http://www.eenet.ee/EENet/tcs_juhend juhendi alusel.
 +
 +
Lisaks on ametlike sertifikaatide puhul kaks plussi
 +
 +
*klient saab olla kindel, et server mida ta külastab on ikka see mis ta paistab olevat (nt. www.eyp.ee)
 +
*server saab olla kindel, et klient on see kes ta ütleb end olevat
 +
 +
NB! Installitud peaks eelnevalt olema uusim openssl vesioon
 +
 +
===Sertifikaatide tüübid ja väljastamise tingimused===
 +
 +
Alates 1. veebruarist 2013 on kasutusel järgmised sertifikaatide tüübid ja nende väljastamise tingimused.
 +
 +
'''OV - Organization Validated Server Sertificate'''
 +
Enne sertifikaadi väljastamist kontrollitakse asutuse õigust (äri)nime kasutada - asutuse nimi peab olema kontrollitav avalikest ja piisavalt autoriteetsetest allikatest. Taotleva asutuse nimi sertifikaaditaotluses peab olema asutuse ametlik nimi, selle ingliskeelne tõlge või nime transkriptsioon 7-bit ASCII kodeeringus.
 +
 +
Kontrollitakse ka õigust domeeninime kasutada (vt. altpoolt).
 +
 +
'''DV - Domain Validated Server Sertificate'''
 +
NB! DV sertifikaat ei sisalda asutuse nime.
 +
 +
Kontrollitakse taotluses oleva(te) domeeninime(de) kasutamisõigust. Domeeni valideerimine (DCV - Domain Control Verification) toimub ühel järgnevatest meetoditest:
 +
 +
*E-kiri Comodo serfitiseerimiskeskuse poolt aktsepteeritud aadressidele
 +
*HTTP CSR räsi meetod (CSR kirje lisamine veebi räsisse)
 +
*DNS CNAME räsi meetod (CNAME kirje lisamine nimeserverisse)
 +
 +
'''OV''' sertifikaadid on vajalikud kui asutuse nimi sertifikaadis on oluline (rahalised toimingud, teenuse kõrgem turvalisustase, vmt). Muudel juhtudel soovitaks kasutada '''DV''' sertifikaate.
 +
 +
===Sertifikaadi taotlemine===
 +
 +
Enne kuslil sertifikaaditeenuse pakkuja juures vormi täitmist tuleb oma arvutis genereerida avaliku/salajase võtme paar ja taotlus.
 +
Vältda tasub lühikeste võtmepikkustega (vähem kui 128 bitti) šifreid. Võtme pikkus peab olema vähemalt 2048 bitti.
 +
 +
$ '''openssl genrsa -out server.key 2048'''
 +
Generating RSA private key, 2048 bit long modulus
 +
...................................+++
 +
......................................+++
 +
e is 65537 (0x10001)
 +
 +
Taotluse genereerimine
 +
 +
$ openssl req -new -sha256 -key server.key -out server.csr
 +
 +
Taotluse loomise käigus küsitakse kasutajalt mitmeid küsimusi. Näiteks Country Name ja Locality name, milledel
 +
pikemalt ei peatuks ning seletaks ehk rohkem segadust tekitada võivaid välju.
 +
 +
'''Mis on CN?'''
 +
Väljale Common Name tuleb sisestada domeeninimi, millele sertifikaati taotletakse.
 +
 +
'''Mis on Subject Alternative Name?'''
 +
 +
Seda laiendust on soovitav kasutada juhul kui ühte sertifikaati on tarvis kasutada mitme domeeni jaoks. Ühele sertifikaadile saab taotlusvormi täitmisel lisada mitu domeeninime. (sertifikaaditaotlus genereerida ühele domeeninimele, ent taotluse esitamisel lisada juurde täiendavad domeeninimed)
 +
 +
PS: Kui sisestad challenge passwordi küsiakse seda iga kord kui apache stardib või server teeb reboodi.
 +
 +
'''Kas taotleda tasub ka wildcard sertifikaate?'''
 +
 +
wildcard (*.domeen) SSL sertifikaate saab taotleda, kuid enne taotlemist tuleks kindlasti läbi kaaluda tekkida võivad turvariskid - privaatne võti peab sellisel juhul asuma ainult ühes masinas, aga kui see häkkerite kätte satub, saab võltsida kõiki selle domeeniga seotud sertifikaate. wildcard SSL sertifikaatide kohta on kirjutatud näiteks siin: http://helpdesk.wisc.edu/page.php?id=18924
 +
Juhul kui on mingi teadaolev hulk domeeninimesid, millele ühte sertifikaati vaja on, võib kasutada Subject Alternative Name laiendust
 +
 +
Olles sertifikaadi taotluse edukalt loonud võime selle edastada enda teenusepakkujale, kes edasi juba tekitab selle
 +
alusel seritifikaadi. Või siis allkirjastame taotluse ise ja tekitame nn self-signed sertifikaadi.
  
 
===Self-signed serfitikaadi loomine===
 
===Self-signed serfitikaadi loomine===
  
openssl genrsa -des3 -out server.key 1024
+
Juhul kui me kas rahalistel või isiklikel põhjustel ei soovi endale ametlikku sertifikaati
openssl req -new -key server.key -out server.csr
+
vaid soovime lihtsalt nt enda isikliku serveri ja lauaarvuti vahelist liiklust selleabil krüoteerida vms saame loodud taotluse ka ise signeerida.
openssl x509 -req -days 300 -in server.csr -signkey server.key -out server.crt
 
openssl rsa -in server.key -out server.key
 
  
  chmod 0400 server.key
+
Võtame juba ülal äratoodud käskudega loodud taotluse ja allkirjastame selle ise ära
  chmod 0400 server.crt
+
 
 +
  $ openssl x509 -req -days 300 -in server.csr -signkey server.key -out server.crt
 +
  $ openssl rsa -in server.key -out server.key
 +
 
 +
Võimalus on luua ka päris oma isiklik sertifitseerimiskeskus sellest pikemalt http://kuutorvaja.eenet.ee/wiki/Sertifikaadid
  
 
===Apache seadistus===
 
===Apache seadistus===
  
Apache peab olema eelnevalt kompileeritud SSL toega. Näites on kasutatud versiooni apache 2.x versioonil 1.3 võib
+
Apache peab olema eelnevalt kompileeritud SSL toega. Näites on kasutatud versiooni apache 2.x versioonil 1.3 kasutamisel võib olla erinevusi.
olla erinevusi.
 
  
 +
Seadistame esmalt sertifikaadi õigused paika, seda tuleb teha sõltumata operatsioonisüsteemist.
 +
 +
$ chmod 0400 server.key
 +
$ chmod 0400 server.crt
  
 
'''FreeBSD'''
 
'''FreeBSD'''
 +
 +
Paigaldame apache
 +
 +
# cd /usr/ports/www/apache22 && make install clean
 +
 
Lisame FreeBSD's faili '''/etc/rc.conf''' rea  
 
Lisame FreeBSD's faili '''/etc/rc.conf''' rea  
  
  apache2ssl_enable="YES"
+
  apache22_enable="YES"
  
Käivitame apache ssl toega
+
Käivitame apache
  
  apachectl sslstart
+
  # /usr/local/etc/rc.d/apache22.sh start
  
Kontrollime käsuga sockstat, kas kuulab?
+
Kontrollime käsuga sockstat, kas apache kuulab 443 pordil?
  
 
  # sockstat | grep 443
 
  # sockstat | grep 443
53. rida: 139. rida:
 
Käivitamiseks piisab
 
Käivitamiseks piisab
  
  /etc/init.d/apache2 start
+
  # /etc/init.d/apache2 start
  
 
selleks et peale rebooti automaatselt stardiks
 
selleks et peale rebooti automaatselt stardiks
  
  rc-update add apache2 default
+
  # rc-update add apache2 default
  
 +
'''httpd.conf'''
  
'''httpd.conf'''
+
Kasutage kõige uuemat tarkvara, s.h. OpenSSL ja Apache viimaseid turvalisi versioone.
 +
Ebaturvalist SSLv2 protokolli tuleks vältida, samuti lühikeste võtmepikkustega (vähem kui 128 bitti)
 +
šifreid.
  
Apache '''httpd.conf''' võib luua sarnaselt.
+
Apache '''httpd.conf''' võib luua sarnaselt. Näidiskonfiguratsioon Apache veebiserverile:
 
Siin toodud seadistus on täiesti universaalne ja operatsioonisüsteemist sõltumatu
 
Siin toodud seadistus on täiesti universaalne ja operatsioonisüsteemist sõltumatu
 +
 +
Turvalisuse tõstmiseks saab alates Apache 2.2.24 versioonist välja lülitada ka SSL pakkimise: SSLCompression Off.
 +
Ebaturvalist SSLv2 on mõistlik samuti vältida.
  
 
  Listen 443
 
  Listen 443
69. rida: 161. rida:
 
   
 
   
 
  <VirtualHost ip-aadress:443>
 
  <VirtualHost ip-aadress:443>
  ServerName www.nimi.ee
+
ServerName www.nimi.ee
  DocumentRoot /home/nimi
+
DocumentRoot /home/nimi
 
  SSLEngine on
 
  SSLCertificateFile /rada/sertifikaadini/server.crt
 
  SSLCertificateKeyFile /rada/sertifikaadini/server.key
 
 
   
 
   
 +
SSLEngine on
 +
SSLSessionCache shmcb:/var/run/ssl_scache(512000)
 +
SSLSessionCacheTimeout 300
 +
SSLProtocol All -SSLv2
 +
SSLCipherSuite <<ciphers>>
 +
SSLCertificateFile /kataloog/arvuti.nimi.crt
 +
SSLCertificateKeyFile /kataloog/arvuti.nimi.key
 +
# Apache ver 2.2.0+:
 +
SSLHonorCipherOrder On
 +
# Apache ver 2.2.24+:
 +
SSLCompression Off
 
  </VirtualHost>
 
  </VirtualHost>
 +
 +
Siin tuleb <<ciphers>> asendada šifriloeteluga, mis annab antud serverile vajaliku turvataseme. Soovitusi selleks leiab näiteks Mozilla veebilehelt https://wiki.mozilla.org/Security/Server_Side_TLS
 +
 +
NB! pkcs formaadis sert tuleb enne kasutama hakkamist ümber konvertida
 +
 +
$ openssl pkcs7 -print_certs -in servver.crt -outform DER -out serveruus.crt
 +
 +
===Lingid===
 +
 +
https://www.ssllabs.com/ssltest/analyze.html?d=zoo.tartu.ee Testida saab nt tulemust siit lingilt
 +
 +
https://wiki.mozilla.org/Security/Server_Side_TLS Tänapäevase SSL/TLS kasutamise soovitused
 +
 +
https://ssl-config.mozilla.org/ Ja siin on suisa generaator, mis väidetavalt teeb parima konfi

Viimane redaktsioon: 1. oktoober 2019, kell 10:01

Sissejuhatus

Alustame siiski eesmärgist: miks seda üldse hea teha on?

Nagu öeldud on see seotud krüpteerimisega. Täpsemine, liiklus veebiserveri ja teine browseri vahel saab olema krüpteeritud. Antud juhul on selle tegemiseks vaja vähemalt veebiserveril omada public ja private keyd. Antud kontekstis nimetatakse serveri public key'd ka serveri sertifikaadiks. Niisiis, kui firefox külstab seda serverit, siis

  • antakse talle serveri avalik võti (mille sisu pole põhimõtteliselt kellegile saladus)
  • seejärel loob browser ilmselt midagi session key sarnast ning saadab servery public key'ga krüpteeritult session key serverile
  • seda saadetist ei saa keegi peale vastava private key lahti võtta - st .ainult server

Tulemusena on mõlemad pooled kokku leppinud sümmeetrilise võtme millega edaspidi andmevahetust krüpteeritakse.

Sertifikaatide juures on kaks võimalust. Üks on luua isesigneeritud ehk self-signed sertifikaat. Sellisel juhul tekitab kasutaja ise nii sertifikaadi taotluse kui ka signeerib selle ise.

Teine võimalus on tekitada sertifikaadi taotlus ja lasta see allkirjastada mõnel tunnustatud teenusepakkujal. Sedalaadi sertifikaate nimetatakse ka popup-free sertifikaatideks, seda kuna browserid ei kuva nende sertifikaatide juures hoiatavaid tekste enne veebile sisenemist, nii nagu nad teevad seda self-signed sertidega.

Ühe sellise 'instansi'ina tegutseb näiteks organisatsioon Verysign. Haridus, teadus ja kultuuriasutused saavad lasta enda taotlusi signeerida EENetil http://www.eenet.ee/EENet/tcs_juhend juhendi alusel.

Lisaks on ametlike sertifikaatide puhul kaks plussi

  • klient saab olla kindel, et server mida ta külastab on ikka see mis ta paistab olevat (nt. www.eyp.ee)
  • server saab olla kindel, et klient on see kes ta ütleb end olevat

NB! Installitud peaks eelnevalt olema uusim openssl vesioon

Sertifikaatide tüübid ja väljastamise tingimused

Alates 1. veebruarist 2013 on kasutusel järgmised sertifikaatide tüübid ja nende väljastamise tingimused.

OV - Organization Validated Server Sertificate Enne sertifikaadi väljastamist kontrollitakse asutuse õigust (äri)nime kasutada - asutuse nimi peab olema kontrollitav avalikest ja piisavalt autoriteetsetest allikatest. Taotleva asutuse nimi sertifikaaditaotluses peab olema asutuse ametlik nimi, selle ingliskeelne tõlge või nime transkriptsioon 7-bit ASCII kodeeringus.

Kontrollitakse ka õigust domeeninime kasutada (vt. altpoolt).

DV - Domain Validated Server Sertificate NB! DV sertifikaat ei sisalda asutuse nime.

Kontrollitakse taotluses oleva(te) domeeninime(de) kasutamisõigust. Domeeni valideerimine (DCV - Domain Control Verification) toimub ühel järgnevatest meetoditest:

  • E-kiri Comodo serfitiseerimiskeskuse poolt aktsepteeritud aadressidele
  • HTTP CSR räsi meetod (CSR kirje lisamine veebi räsisse)
  • DNS CNAME räsi meetod (CNAME kirje lisamine nimeserverisse)

OV sertifikaadid on vajalikud kui asutuse nimi sertifikaadis on oluline (rahalised toimingud, teenuse kõrgem turvalisustase, vmt). Muudel juhtudel soovitaks kasutada DV sertifikaate.

Sertifikaadi taotlemine

Enne kuslil sertifikaaditeenuse pakkuja juures vormi täitmist tuleb oma arvutis genereerida avaliku/salajase võtme paar ja taotlus. Vältda tasub lühikeste võtmepikkustega (vähem kui 128 bitti) šifreid. Võtme pikkus peab olema vähemalt 2048 bitti.

$ openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus
...................................+++
......................................+++
e is 65537 (0x10001)

Taotluse genereerimine

$ openssl req -new -sha256 -key server.key -out server.csr

Taotluse loomise käigus küsitakse kasutajalt mitmeid küsimusi. Näiteks Country Name ja Locality name, milledel pikemalt ei peatuks ning seletaks ehk rohkem segadust tekitada võivaid välju.

Mis on CN? Väljale Common Name tuleb sisestada domeeninimi, millele sertifikaati taotletakse.

Mis on Subject Alternative Name?

Seda laiendust on soovitav kasutada juhul kui ühte sertifikaati on tarvis kasutada mitme domeeni jaoks. Ühele sertifikaadile saab taotlusvormi täitmisel lisada mitu domeeninime. (sertifikaaditaotlus genereerida ühele domeeninimele, ent taotluse esitamisel lisada juurde täiendavad domeeninimed)

PS: Kui sisestad challenge passwordi küsiakse seda iga kord kui apache stardib või server teeb reboodi.

Kas taotleda tasub ka wildcard sertifikaate?

wildcard (*.domeen) SSL sertifikaate saab taotleda, kuid enne taotlemist tuleks kindlasti läbi kaaluda tekkida võivad turvariskid - privaatne võti peab sellisel juhul asuma ainult ühes masinas, aga kui see häkkerite kätte satub, saab võltsida kõiki selle domeeniga seotud sertifikaate. wildcard SSL sertifikaatide kohta on kirjutatud näiteks siin: http://helpdesk.wisc.edu/page.php?id=18924 Juhul kui on mingi teadaolev hulk domeeninimesid, millele ühte sertifikaati vaja on, võib kasutada Subject Alternative Name laiendust

Olles sertifikaadi taotluse edukalt loonud võime selle edastada enda teenusepakkujale, kes edasi juba tekitab selle alusel seritifikaadi. Või siis allkirjastame taotluse ise ja tekitame nn self-signed sertifikaadi.

Self-signed serfitikaadi loomine

Juhul kui me kas rahalistel või isiklikel põhjustel ei soovi endale ametlikku sertifikaati vaid soovime lihtsalt nt enda isikliku serveri ja lauaarvuti vahelist liiklust selleabil krüoteerida vms saame loodud taotluse ka ise signeerida.

Võtame juba ülal äratoodud käskudega loodud taotluse ja allkirjastame selle ise ära

$ openssl x509 -req -days 300 -in server.csr -signkey server.key -out server.crt
$ openssl rsa -in server.key -out server.key

Võimalus on luua ka päris oma isiklik sertifitseerimiskeskus sellest pikemalt http://kuutorvaja.eenet.ee/wiki/Sertifikaadid

Apache seadistus

Apache peab olema eelnevalt kompileeritud SSL toega. Näites on kasutatud versiooni apache 2.x versioonil 1.3 kasutamisel võib olla erinevusi.

Seadistame esmalt sertifikaadi õigused paika, seda tuleb teha sõltumata operatsioonisüsteemist.

$ chmod 0400 server.key
$ chmod 0400 server.crt

FreeBSD

Paigaldame apache

# cd /usr/ports/www/apache22 && make install clean

Lisame FreeBSD's faili /etc/rc.conf rea

apache22_enable="YES"

Käivitame apache

# /usr/local/etc/rc.d/apache22.sh start

Kontrollime käsuga sockstat, kas apache kuulab 443 pordil?

# sockstat | grep 443
www      httpd      20720 4  tcp46  *:443                 *:*
www      httpd      20709 4  tcp46  *:443                 *:*
www      httpd      20020 4  tcp46  *:443                 *:*
www      httpd      20019 4  tcp46  *:443                 *:*

kuulab :]

Gentoo

Failis /etc/conf.d/apache2

Lisame APACHE2_OPTS= reale lisaks -D SSL

näiteks nii

APACHE2_OPTS="-D PHP5 -D SSL

Käivitamiseks piisab

# /etc/init.d/apache2 start

selleks et peale rebooti automaatselt stardiks

# rc-update add apache2 default

httpd.conf

Kasutage kõige uuemat tarkvara, s.h. OpenSSL ja Apache viimaseid turvalisi versioone. Ebaturvalist SSLv2 protokolli tuleks vältida, samuti lühikeste võtmepikkustega (vähem kui 128 bitti) šifreid.

Apache httpd.conf võib luua sarnaselt. Näidiskonfiguratsioon Apache veebiserverile: Siin toodud seadistus on täiesti universaalne ja operatsioonisüsteemist sõltumatu

Turvalisuse tõstmiseks saab alates Apache 2.2.24 versioonist välja lülitada ka SSL pakkimise: SSLCompression Off. Ebaturvalist SSLv2 on mõistlik samuti vältida.

Listen 443
NameVirtualHost ip-aadress:443

<VirtualHost ip-aadress:443>
ServerName www.nimi.ee
DocumentRoot /home/nimi

SSLEngine on
SSLSessionCache shmcb:/var/run/ssl_scache(512000)
SSLSessionCacheTimeout 300
SSLProtocol All -SSLv2
SSLCipherSuite <<ciphers>>
SSLCertificateFile /kataloog/arvuti.nimi.crt
SSLCertificateKeyFile /kataloog/arvuti.nimi.key
# Apache ver 2.2.0+:
SSLHonorCipherOrder On
# Apache ver 2.2.24+:
SSLCompression Off
</VirtualHost>

Siin tuleb <<ciphers>> asendada šifriloeteluga, mis annab antud serverile vajaliku turvataseme. Soovitusi selleks leiab näiteks Mozilla veebilehelt https://wiki.mozilla.org/Security/Server_Side_TLS

NB! pkcs formaadis sert tuleb enne kasutama hakkamist ümber konvertida

$ openssl pkcs7 -print_certs -in servver.crt -outform DER -out serveruus.crt

Lingid

https://www.ssllabs.com/ssltest/analyze.html?d=zoo.tartu.ee Testida saab nt tulemust siit lingilt

https://wiki.mozilla.org/Security/Server_Side_TLS Tänapäevase SSL/TLS kasutamise soovitused

https://ssl-config.mozilla.org/ Ja siin on suisa generaator, mis väidetavalt teeb parima konfi