Ero sivun ”Apache ja HTTPS” versioiden välillä
p (listat) |
p (Ironista.) |
||
(8 välissä olevaa versiota 6 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
[[HTTPS]]-protokolla mahdollistaa verkkoliikenteen salaamisen [[wikipedia:fi: | [[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== | ==Varmenne== | ||
Rivi 6: | Rivi 6: | ||
Aloitetaan luomalla varmenne, joka on voimassa halutun ajan. Vanhemmissa järjestelmissä tämä onnistuu komennolla | 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. | ja vastaamalla kysymyksiin. | ||
<!-- * Harkinnassa voisi olla read-only slaven tekeminen varsinaisesta koneesta. | <!-- * Harkinnassa voisi olla read-only slaven tekeminen varsinaisesta koneesta. | ||
-- Mitä tämä tarkoittaa? --> | -- 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 | ||
Rivi 19: | Rivi 21: | ||
shift | shift | ||
fi | fi | ||
echo | |||
echo creating selfsigned certificate | echo creating selfsigned certificate | ||
echo "replace it with one signed by a certification authority (CA)" | echo "replace it with one signed by a certification authority (CA)" | ||
Rivi 29: | Rivi 31: | ||
# 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 | ||
export RANDFILE=/dev/random | |||
openssl req $@ -config ssleay.cnf \ | |||
-new -x509 -nodes -out /etc/apache2/ssl/apache.pem \ | -new -x509 -nodes -out /etc/apache2/ssl/apache.pem \ | ||
-keyout /etc/apache2/ssl/apache.pem -days 365 | -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 \ | /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>. | 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: | 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. | # SSLeay example configuration file. | ||
Rivi 65: | Rivi 69: | ||
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 <tt>/etc/apache2/ssl</tt> on luotava ja sen omistajaksi on asetettava pääkäyttäjä (<tt>chown root /etc/apache2/ssl</tt>). | ||
Rivi 73: | Rivi 78: | ||
*Asetetaan Apache kuuntelemaan oikeaa porttia lisäämällä tiedostoon <tt>/etc/apache2/ports.conf</tt> rivi: | *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: | *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 | ||
Rivi 82: | Rivi 87: | ||
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 | |||
SSLEngine on | |||
SSLCertificateFile /etc/apache2/ssl/apache.crt | |||
SSLCertificateKeyFile /etc/apache2/ssl/apache.key | |||
*Aktivoidaan asetukset: | *Aktivoidaan asetukset: | ||
a2ensite ssl | a2ensite ssl | ||
Rivi 95: | Rivi 104: | ||
a2enmod rewrite | a2enmod rewrite | ||
*Muokataan tiedostoa <tt>/etc/apache2/sites-available/default</tt> lisäämällä <VirtualHost *>-tagin sisään: | *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 100: | 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. | ||
Muutokset tulevat voimaan käynnistämällä Apache uusiksi. | Muutokset tulevat voimaan käynnistämällä Apache uusiksi. | ||
apache2ctl restart | apache2ctl restart | ||
== Katso myös == | |||
* [[HST]] - Henkilökortti ja varmenteet. | |||
==Aiheesta muualla== | ==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]] |
Nykyinen versio 21. marraskuuta 2020 kello 21.25
HTTPS-protokolla mahdollistaa verkkoliikenteen salaamisen SSL-yhteyskäytännöllä. Tässä oppaassa otetaan käyttöön Apachen HTTPS-tuki.
Varmenne[muokkaa]
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
Uudemmissa järjestelmissä komentoa apache2-ssl-certificate 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. Muuten on parasta luoda varmennetiedosto itse seuraavalla skriptillä:
#!/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
Tässä alkuperäistä varmenteen luovaa skriptiä on muutettu lisäämällä valitsin -days 365 ja korjattu asetustiedoston polku. Huomaa, että joissain järjestelmissä Apachen asetustiedoston polku saattaa olla jokin muu kuin /etc/apache2.
Skripti tarvitsee asetustiedoston, joka on samassa hakemistossa kuin itse skripti ja jonka tiedostonimi on ssleay.cnf. Tiedoston sisällön tulee olla kutakuinkin seuraava:
#
# 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
Tämän lisäksi hakemisto /etc/apache2/ssl on luotava ja sen omistajaksi on asetettava pääkäyttäjä (chown root /etc/apache2/ssl).
SSL:n käyttöönotto[muokkaa]
- Ladataan Apachen SSL-moduuli
a2enmod ssl
- Asetetaan Apache kuuntelemaan oikeaa porttia lisäämällä tiedostoon /etc/apache2/ports.conf rivi:
Listen 443
- 443 on https:n oletusportti.
- Asetetaan SSL-suojatuille sivuille omat asetukset. Kopioidaan asetustiedoston pohja:
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
- Lisätään nyt luotuun tiedostoon (/etc/apache2/sites-available/ssl) kahdelle ensimmäiselle riville porttinumerot tyyliin
NameVirtualHost *:443 <virtualhost *:443>
- Lisätään <virtualhost *:443>-tagin sisään rivit:
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem
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
- Käynnistetään lopuksi Apache uudelleen, jotta kaikki muutokset tulevat voimaan.
apache2ctl restart
Nyt salaus pitäisi tulla käyttöön, kun sivuille mennään https-alkuisella osoitteella http:n sijaan.
Salauksen käyttöpakko[muokkaa]
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.
a2enmod rewrite
- Muokataan tiedostoa /etc/apache2/sites-available/default lisäämällä <VirtualHost *>-tagin sisään:
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^/salainen(.*)$ https://%{SERVER_NAME}/salainen$1 [L,R]
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 2
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.
Muutokset tulevat voimaan käynnistämällä Apache uusiksi.
apache2ctl restart
Katso myös[muokkaa]
- HST - Henkilökortti ja varmenteet.