Ero sivun ”Apache ja HTTPS” versioiden välillä
pEi muokkausyhteenvetoa |
Ei muokkausyhteenvetoa |
||
Rivi 1: | Rivi 1: | ||
Otetaan käyttöön [[wikipedia:fi:ssl|SSL]]-salaus käyttöön [[Apache]]n kanssa. Oletetaan, että Apache2 on asennettuna järjestelmään. | Otetaan käyttöön [[wikipedia:fi:ssl|SSL]]-salaus käyttöön [[Apache]]n kanssa. Oletetaan, että Apache2 on asennettuna vanhempaan Debian/Ubuntu-järjestelmään. | ||
====Sertifikaatti==== | ====Sertifikaatti==== | ||
Rivi 5: | Rivi 5: | ||
apache2-ssl-certificate -days 365 | apache2-ssl-certificate -days 365 | ||
Vastaile tuleviin kysymyksiin. | Vastaile tuleviin kysymyksiin. | ||
* Harkinnassa voisi olla read-only slaven tekeminen varsinaisesta koneesta. | |||
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: | |||
<code> | |||
#!/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 | |||
</code> | |||
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: | |||
====Aktivoidaan SSL-moduuli==== | ====Aktivoidaan SSL-moduuli==== |
Versio 16. huhtikuuta 2007 kello 07.56
Otetaan käyttöön SSL-salaus käyttöön Apachen kanssa. Oletetaan, että Apache2 on asennettuna vanhempaan Debian/Ubuntu-järjestelmään.
Sertifikaatti
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.
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:
- !/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ä 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:
Aktivoidaan SSL-moduuli
a2enmod ssl
Asetetaan Apache kuuntelemaan oikeaa porttia
Lisää tiedostoon /etc/apache2/ports.conf rivi:
Listen 443
443 on https:n oletus portti.
SSL-suojatuille sivuille omat asetukset
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
Lisää nyt luotuun tiedostoon ( /etc/apache2/sites-available/ssl ) kahdelle ensimmäiselle riville porttinumerot tähän tapaan:
NameVirtualHost *:443 <virtualhost *:443>
Ja laita <virtualhost *:443>-tagin sisään rivit:
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem
Aktivoidaan asetukset.
a2ensite ssl
Lopuksi käynnistetään Apache uusiksi, 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.
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 Mod rewritella.
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