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 SSL-salaus käyttöön Apachen kanssa. Oletaan, että Apache2 on asennettuan järjestelmään. Ohje testattu Ubuntun kanssa. |
|
| |
|
| ==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. |
| | sudo apache2-ssl-certificate -days 365 |
| | Vastaile tuleviin kysymyksiin. |
|
| |
|
| Aloitetaan luomalla varmenne, joka on voimassa halutun ajan. Vanhemmissa järjestelmissä tämä onnistuu komennolla
| | ====Aktivoidaan SSL-moduuli==== |
| apache2-ssl-certificate -days 365
| | sudo a2enmod ssl |
| 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>.
| | ====Asetetaan Apache kuuntelemaan oikeaa porttia==== |
| | Lisää tiedostoon '''/etc/apache2/ports.conf''' rivi: |
| | Listen 443 |
| | 443 on https:n oletus portti. |
|
| |
|
| 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:
| | ====SSL-suojatuille sivuille omat asetukset==== |
| <source lang="bash">
| | sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl |
| #
| | Lisää kahdelle ensimmäiselle riville porttinumerot tähän tapaan: |
| # 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
| |
| *Asetetaan Apache kuuntelemaan oikeaa porttia lisäämällä tiedostoon <tt>/etc/apache2/ports.conf</tt> rivi:
| |
| Listen 443
| |
| :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 | |
| *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:
| | Ja laita <virutalhost *: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
| | sudo a2ensite ssl |
| SSLCertificateFile /etc/apache2/ssl/apache.crt
| | |
| SSLCertificateKeyFile /etc/apache2/ssl/apache.key
| | Lopuksi käynnistetään Apache uusiksi, jotta kaikki muutokset tulevat voimaan. |
| *Aktivoidaan asetukset:
| | sudo /etc/init.d/apache2 force-reload |
| 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. | | 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 | | sudo 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 41: |
| RewriteLog "/var/log/apache2/rewrite.log" | | RewriteLog "/var/log/apache2/rewrite.log" |
| RewriteLogLevel 2 | | RewriteLogLevel 2 |
| </source>
| | Nyt http://domain.com/salainen/ ohjautuu automaattisesti SSL-salattuun yhteyteen http://domain.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 | | sudo /etc/init.d/apache2 force-reload |
|
| |
|
| == Katso myös == | | ==Linkkejä== |
| | *[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:Palvelimet]] |
| [[Luokka:Ohjeet]] | | [[Luokka:Ohjeet]] |
| [[Luokka:Opetusmateriaalit]] | | [[Luokka:Opetusmateriaalit]] |
| [[Luokka:Tietoturva]]
| |