Apache ja HTTPS

Linux.fista
Versio hetkellä 16. huhtikuuta 2007 kello 07.56 – tehnyt 83.145.239.217 (keskustelu)
Siirry navigaatioon Siirry hakuun

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:

  1. !/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"

  1. use special .cnf, because with normal one no valid selfsigned
  2. 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

Linkkejä