Muokataan sivua Apache ja HTTPS

Siirry navigaatioon Siirry hakuun
Varoitus: Et ole kirjautunut sisään. IP-osoitteesi näkyy julkisesti kaikille, jos muokkaat. Jos kirjaudut sisään tai luot tunnuksen, muokkauksesi yhdistetään käyttäjänimeesi ja saat paremman käyttökokemuksen.

Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.

Nykyinen versio Oma tekstisi
Rivi 1: Rivi 1:
[[HTTPS]]-protokolla mahdollistaa verkkoliikenteen salaamisen [[wikipedia:fi:SSL|SSL]]-yhteyskäytännöllä. Tässä oppaassa otetaan käyttöön [[Apache]]n HTTPS-tuki.  
Otetaan käyttöön [[wikipedia:fi:ssl|SSL]]-salaus käyttöön [[Apache]]n kanssa. Oletetaan, että Apache2 on asennettuna vanhempaan Debian-pohjaiseen järjestelmään. (Debian, Ubuntu, Knoppix...)


==Varmenne==
====Sertifikaatti====
SSL-salausta käytettäessä tarvitaan varmenne (sertifikaatti). Varmenteen avulla käyttäjä voi paremmin selvittää, minkä palvelimen kanssa verkossa todellisuudessa asioi.
Aloitetaan luomalla sertifikaatti joka on voimassa halutun ajan.
apache2-ssl-certificate -days 365
Vastaile tuleviin kysymyksiin.
* Harkinnassa voisi olla read-only slaven tekeminen varsinaisesta koneesta.


Aloitetaan luomalla varmenne, joka on voimassa halutun ajan. Vanhemmissa järjestelmissä tämä onnistuu komennolla
Tätä sertifikaattikomentoa ei löydy uudemmista Debianeista, eikä siihen liittyvää konfiguraatiotiedostoa tai kohdehakemistoa. Ja suurin osa apache2-ssl-certificate-komennoista ei tue mitään vipuja. Helpointa on luoda tiedosto itse:
apache2-ssl-certificate -days 365
Uudemmissa järjestelmissä komentoa <tt>apache2-ssl-certificate</tt> tai siihen liittyvää asetustiedostoa ei löydy. Ainakin Ubuntu 12.04 voi siinä tapauksessa käyttää komentoa:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
ja vastaamalla kysymyksiin.
<!-- * Harkinnassa voisi olla read-only slaven tekeminen varsinaisesta koneesta.  
-- Mitä tämä tarkoittaa? -->
Muuten on parasta luoda varmennetiedosto itse seuraavalla [[Bash-skriptaus|skriptillä]]:
<source lang="bash">
   #!/bin/sh -e
   #!/bin/sh -e
   if [ "$1" != "--force" -a -f /etc/apache2/ssl/apache.pem ]; then
   if [ "$1" != "--force" -a -f /etc/apache2/ssl/apache.pem ]; then
     echo "/etc/apache2/ssl/apache.pem exists!  Use \"$0 --force.\""
     echo "/etc/apache2/ssl/apache.pem exists!  Use \"$0 --force.\""
     exit 0
     exit 0
   fi
   fi
   if [ "$1" = "--force" ]; then
   if [ "$1" = "--force" ]; then
     shift
     shift
   fi     
   fi     
   echo
   echo
   echo creating selfsigned certificate
   echo creating selfsigned certificate
Rivi 29: Rivi 27:
   echo If you want your certificate to expire after x days call this programm  
   echo If you want your certificate to expire after x days call this programm  
   echo with "-days x"  
   echo with "-days x"  
   # use special .cnf, because with normal one no valid selfsigned
   # use special .cnf, because with normal one no valid selfsigned
   # certificate is created
   # certificate is created
Rivi 39: Rivi 38:
   /etc/apache2/ssl/`/usr/bin/openssl \
   /etc/apache2/ssl/`/usr/bin/openssl \
   x509 -noout -hash < /etc/apache2/ssl/apache.pem`.0
   x509 -noout -hash < /etc/apache2/ssl/apache.pem`.0
</source>
Tässä alkuperäistä varmenteen luovaa skriptiä on muutettu lisäämällä valitsin <tt>-days 365</tt> ja korjattu asetustiedoston polku. Huomaa, että joissain järjestelmissä Apachen asetustiedoston polku saattaa olla jokin muu kuin <tt>/etc/apache2</tt>.


Skripti tarvitsee asetustiedoston, joka on samassa hakemistossa kuin itse skripti ja jonka tiedostonimi on <tt>ssleay.cnf</tt>. Tiedoston sisällön tulee olla kutakuinkin seuraava:
Tässä tiedostoa on muutettu lisäämällä -days 365 vipu komentoon ja korjattu config-tiedoston polku. Configtiedoston oletetaan löytyvän samasta hakemistosta kuin skriptankin. Config-tiedoston sisällä voisi olla vaikka:
<source lang="bash">
   #
   #
   # SSLeay example configuration file.
   # SSLeay example configuration file.
   #
   #
   RANDFILE                = $ENV::HOME/.rnd
   RANDFILE                = $ENV::HOME/.rnd
   [ req ]
   [ req ]
   default_bits            = 1024
   default_bits            = 1024
   default_keyfile        = privkey.pem
   default_keyfile        = privkey.pem
   distinguished_name      = req_distinguished_name
   distinguished_name      = req_distinguished_name
   [ req_distinguished_name ]
   [ req_distinguished_name ]
   countryName                    = Maan nimi (2-kirjaiminen koodi)
   countryName                    = Maan nimi (2-kirjaiminen koodi)
Rivi 58: Rivi 56:
   countryName_min                = 2
   countryName_min                = 2
   countryName_max                = 2
   countryName_max                = 2
   stateOrProvinceName            = Lääni
   stateOrProvinceName            = Lääni
   stateOrProvinceName_default    = Uusimaa
   stateOrProvinceName_default    = Uusimaa
   localityName                    = Kaupunki
   localityName                    = Kaupunki
   organizationName                = Organisaation nimi (esim, yritys)
   organizationName                = Organisaation nimi (esim, yritys)
   organizationName_max            = 64
   organizationName_max            = 64
   organizationalUnitName          = Yksikön nimi (esim. osasto)
   organizationalUnitName          = Yksikön nimi (esim. osasto)
   organizationalUnitName_max      = 64
   organizationalUnitName_max      = 64
   commonName                      = Palvelimen nimi (esim. www.palvelin.fi)
   commonName                      = Palvelimen nimi (esim. www.palvelin.fi)
   commonName_max                  = 64
   commonName_max                  = 64
   emailAddress                    = Sähköpostiosoite
   emailAddress                    = Sähköpostiosoite
   emailAddress_max                = 40
   emailAddress_max                = 40
</source>


Tämän lisäksi hakemisto <tt>/etc/apache2/ssl</tt> on luotava ja sen omistajaksi on asetettava pääkäyttäjä (<tt>chown root /etc/apache2/ssl</tt>).
Tämän lisäksi hakemisto /apache2/ssl on luotava ja annettava root:in haltuun.  


==SSL:n käyttöönotto ==
====Aktivoidaan SSL-moduuli====
*Ladataan Apachen SSL-moduuli
  a2enmod ssl
  a2enmod ssl
*Asetetaan Apache kuuntelemaan oikeaa porttia lisäämällä tiedostoon <tt>/etc/apache2/ports.conf</tt> rivi:
 
====Asetetaan Apache kuuntelemaan oikeaa porttia====
Lisää tiedostoon '''/etc/apache2/ports.conf''' rivi:
  Listen 443
  Listen 443
:443 on [[wikipedia:fi:https|https:n]] oletusportti.
443 on [[wikipedia:fi:https|https:n]] oletus portti.
*Asetetaan SSL-suojatuille sivuille omat asetukset. Kopioidaan asetustiedoston pohja:
 
====SSL-suojatuille sivuille omat asetukset====
  cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
  cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
*Lisätään nyt luotuun tiedostoon (<tt>/etc/apache2/sites-available/ssl</tt>) kahdelle ensimmäiselle riville porttinumerot tyyliin
Lisää nyt luotuun tiedostoon ( '''/etc/apache2/sites-available/ssl''' ) kahdelle ensimmäiselle riville porttinumerot tähän tapaan:
  NameVirtualHost *:443
  NameVirtualHost *:443
  <virtualhost *:443>
  <virtualhost *:443>
*Lisätään <virtualhost *:443>-tagin sisään rivit:
Ja laita <virtualhost *:443>-tagin sisään rivit:
  SSLEngine On
  SSLEngine On
  SSLCertificateFile /etc/apache2/ssl/apache.pem
  SSLCertificateFile /etc/apache2/ssl/apache.pem
'''Tai''' vaihtoehtoisesti käytettäessä uudempaa Ubuntu 12.04:n kanssa toimivaa komentoa
Aktivoidaan asetukset.
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
*Aktivoidaan asetukset:
  a2ensite ssl
  a2ensite ssl
*Käynnistetään lopuksi Apache uudelleen, jotta kaikki muutokset tulevat voimaan.
 
Lopuksi käynnistetään Apache uusiksi, jotta kaikki muutokset tulevat voimaan.
  apache2ctl restart
  apache2ctl restart


Nyt salaus pitäisi tulla käyttöön, kun sivuille mennään https-alkuisella osoitteella http:n sijaan.
Nyt salaus pitäisi tulla käyttöön, kun sivuille mennään https-alkuisella osoitteella http:n sijaan.


==Salauksen käyttöpakko==
====Mod rewrite====
Nyt käyttäjä pystyy valitsemaan, käyttääkö hän salausta vai ei. Usein halutaan pakottaa käyttäjä käyttämään salattua yhteyttä. Se onnistuu rewrite-moduulilla.
Nyt käyttäjä pystyy valitsemaan käyttääkö hän salausta vai ei. Usein halutaan pakottaa käyttäjä käyttämään salattua yhteyttä. Se onnistuu Mod rewritella.


*Aktoivoidaan taas oikea moduuli.
Aktoivoidaan taas oikea moduuli.
  a2enmod rewrite
  a2enmod rewrite
*Muokataan tiedostoa <tt>/etc/apache2/sites-available/default</tt> lisäämällä <VirtualHost *>-tagin sisään:
Muokataan tiedostoa '''/etc/apache2/sites-available/default''' lisäämällä <VirtualHost *>-tagin sisään:
<source lang="bash">
  RewriteEngine  on
  RewriteEngine  on
  RewriteCond    %{SERVER_PORT} ^80$
  RewriteCond    %{SERVER_PORT} ^80$
Rivi 110: Rivi 110:
  RewriteLog      "/var/log/apache2/rewrite.log"
  RewriteLog      "/var/log/apache2/rewrite.log"
  RewriteLogLevel 2
  RewriteLogLevel 2
</source>
Nyt http://www.example.com/salainen/ ohjautuu automaattisesti SSL-salattuun yhteyteen https://www.example.com/salainen/. Jos haluat kaikki sivut SSL-salauksen alle voit jättää edelliseen hakemiston kohdalle pelkästään /:n. Eli jätä vain sana "salainen" pois.  
Nyt http://www.example.com/salainen/ ohjautuu automaattisesti SSL-salattuun yhteyteen https://www.example.com/salainen/. Jos haluat kaikki sivut SSL-salauksen alle voit jättää edelliseen hakemiston kohdalle pelkästään /:n. Eli jätä vain sana "salainen" pois.  


Rivi 116: Rivi 115:
  apache2ctl restart
  apache2ctl restart


== Katso myös ==
==Linkkejä==
*[http://forum.ubuntu-fi.org/index.php?topic=7213.0 Keskustelua tästä Ubuntu-fi:n foorumilla.]
*[http://forum.ubuntu-fi.org/index.php?topic=313.0 Ohje Apache-palvelimen asennukseen Ubuntuun.]


* [[HST]] - Henkilökortti ja varmenteet.


==Aiheesta muualla==
*[https://forum.ubuntu-fi.org/index.php?topic=7213.0 Keskustelua tästä Ubuntu-fi:n foorumilla.]
*[https://forum.ubuntu-fi.org/index.php?topic=313.0 Ohje Apache-palvelimen asennukseen Ubuntuun.]


[[Luokka:Apache]]
[[Luokka:Apache]]
[[Luokka:Ohjeet]]
[[Luokka:Ohjeet]]
[[Luokka:Opetusmateriaalit]]
[[Luokka:Opetusmateriaalit]]
[[Luokka:Tietoturva]]
Wikin materiaali on kaikkien vapaasti käytettävissä Creative Commons 3.0 - nimi mainittava -lisenssin alaisuudessa. TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!

Muokataksesi tätä sivua vastaa alla olevaan kysymykseen (lisätietoja):

Peruuta Muokkausohjeet (avautuu uuteen ikkunaan)