Ero sivun ”Apache ja HTTPS” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p
Ironista.
Ei muokkausyhteenvetoa |
p (Ironista.) |
||
(17 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: | |||
* Harkinnassa voisi olla read-only slaven tekeminen varsinaisesta koneesta. | 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 27: | Rivi 29: | ||
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 38: | Rivi 39: | ||
/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: | |||
<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 56: | Rivi 58: | ||
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 /apache2/ssl on luotava ja | 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 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 115: | 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]] |