Ero sivun ”Apache ja HTTPS” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p
Ironista.
(kirjoitusvirhe) |
p (Ironista.) |
||
(21 välissä olevaa versiota 9 käyttäjän tekeminä ei näytetä) | |||
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. | |||
==== | ==Varmenne== | ||
Aloitetaan luomalla | SSL-salausta käytettäessä tarvitaan varmenne (sertifikaatti). Varmenteen avulla käyttäjä voi paremmin selvittää, minkä palvelimen kanssa verkossa todellisuudessa asioi. | ||
Aloitetaan luomalla varmenne, joka on voimassa halutun ajan. Vanhemmissa järjestelmissä tämä onnistuu komennolla | |||
apache2-ssl-certificate -days 365 | 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 | |||
if [ "$1" != "--force" -a -f /etc/apache2/ssl/apache.pem ]; then | |||
echo "/etc/apache2/ssl/apache.pem exists! Use \"$0 --force.\"" | |||
exit 0 | |||
fi | |||
if [ "$1" = "--force" ]; then | |||
shift | |||
fi | |||
echo | |||
echo creating selfsigned certificate | |||
echo "replace it with one signed by a certification authority (CA)" | |||
echo | |||
echo enter your ServerName at the Common Name prompt | |||
echo | |||
echo If you want your certificate to expire after x days call this programm | |||
echo with "-days x" | |||
# use special .cnf, because with normal one no valid selfsigned | |||
# certificate is created | |||
export RANDFILE=/dev/random | |||
openssl req $@ -config ssleay.cnf \ | |||
-new -x509 -nodes -out /etc/apache2/ssl/apache.pem \ | |||
-keyout /etc/apache2/ssl/apache.pem -days 365 | |||
chmod 600 /etc/apache2/ssl/apache.pem | |||
ln -sf /etc/apache2/ssl/apache.pem \ | |||
/etc/apache2/ssl/`/usr/bin/openssl \ | |||
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: | |||
<source lang="bash"> | |||
# | |||
# SSLeay example configuration file. | |||
# | |||
RANDFILE = $ENV::HOME/.rnd | |||
[ req ] | |||
default_bits = 1024 | |||
default_keyfile = privkey.pem | |||
distinguished_name = req_distinguished_name | |||
[ req_distinguished_name ] | |||
countryName = Maan nimi (2-kirjaiminen koodi) | |||
countryName_default = FI | |||
countryName_min = 2 | |||
countryName_max = 2 | |||
stateOrProvinceName = Lääni | |||
stateOrProvinceName_default = Uusimaa | |||
localityName = Kaupunki | |||
organizationName = Organisaation nimi (esim, yritys) | |||
organizationName_max = 64 | |||
organizationalUnitName = Yksikön nimi (esim. osasto) | |||
organizationalUnitName_max = 64 | |||
commonName = Palvelimen nimi (esim. www.palvelin.fi) | |||
commonName_max = 64 | |||
emailAddress = Sähköpostiosoite | |||
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>). | ||
==SSL:n käyttöönotto == | |||
*Ladataan Apachen SSL-moduuli | |||
a2enmod ssl | a2enmod ssl | ||
*Asetetaan Apache kuuntelemaan oikeaa porttia lisäämällä tiedostoon <tt>/etc/apache2/ports.conf</tt> rivi: | |||
Listen 443 | Listen 443 | ||
443 on [[wikipedia:fi:https|https:n]] | :443 on [[wikipedia:fi:https|https:n]] oletusportti. | ||
*Asetetaan SSL-suojatuille sivuille omat asetukset. Kopioidaan asetustiedoston pohja: | |||
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 | |||
NameVirtualHost *:443 | NameVirtualHost *:443 | ||
<virtualhost *:443> | <virtualhost *:443> | ||
*Lisätään <virtualhost *:443>-tagin sisään rivit: | |||
SSLEngine On | SSLEngine On | ||
SSLCertificateFile /etc/apache2/ssl/apache.pem | SSLCertificateFile /etc/apache2/ssl/apache.pem | ||
Aktivoidaan asetukset | '''Tai''' vaihtoehtoisesti käytettäessä uudempaa Ubuntu 12.04:n kanssa toimivaa komentoa | ||
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. | |||
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== | ||
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 | 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. | ||
Aktoivoidaan taas oikea moduuli. | *Aktoivoidaan taas oikea moduuli. | ||
a2enmod rewrite | a2enmod rewrite | ||
Muokataan tiedostoa | *Muokataan tiedostoa <tt>/etc/apache2/sites-available/default</tt> lisäämällä <VirtualHost *>-tagin sisään: | ||
<source lang="bash"> | |||
RewriteEngine on | RewriteEngine on | ||
RewriteCond %{SERVER_PORT} ^80$ | RewriteCond %{SERVER_PORT} ^80$ | ||
Rivi 41: | 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 46: | Rivi 116: | ||
apache2ctl restart | apache2ctl restart | ||
== | == Katso myös == | ||
* [[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]] |