Luo kansio /etc/apache2/ssl komennolla sudo mkdir /etc/apache2/ssl
Aseta omistajaksi root komennolla sudo chown root:root /etc/apache2/ssl
Sertifikaatti
Aloitetaan luomalla sertifikaatti joka on voimassa halutun ajan.
Luo kotihakemistoon scripti ssl.sh ja kopioi koodi:
Koodi: Valitse kaikki
#!/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 3650
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
Luo samaan hakemistoon tiedosto ssleay.cnf ja kopioi koodi:
Koodi: Valitse kaikki
#
# 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
Aktivoidaan SSL-moduuli
a2enmod ssl
Asetetaan Apache kuuntelemaan oikeaa porttia
Lisää tiedostoon /etc/apache2/ports.conf rivi:
sudo gedit /etc/apache2/ports.conf
Listen 443
443 on https 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:
sudo gedit /etc/apache2/sites-available/ssl
NameVirtualHost *:443
<virtualhost *:443>
Ja laita <virtualhost *:443>-tagin sisään rivit:
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
Huomaa, että jos sulla on monta sivusto, niin lisää vain haluttuun sivustoon tämä
Aktivoidaan asetukset.
a2ensite ssl
Lopuksi käynnistetään Apache uusiksi, jotta kaikki muutokset tulevat voimaan.
sudo /etc/init.d/apache2 restart
Nyt salaus pitäisi tulla käyttöön, kun sivuille mennään https-alkuisella osoitteella http:n sijaan.
PAKOTETTU SALAUS
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:
sudo gedit /etc/apache2/sites-available/default
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.
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^/(.*)$ https://%{SERVER_NAME} [L,R]
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 2
Muutokset tulevat voimaan käynnistämällä Apache uusiksi.
sudo /etc/init.d/apache2 restart