Apache ja HTTPS
Otetaan käyttöön SSL-salaus käyttöön Apachen kanssa. Oletaan, että Apache2 on asennettuan järjestelmään. Ohje testattu Ubuntun kanssa.
Sertifikaatti
Aloitetaan luomalla sertifikaatti joka on voimassa halutun ajan.
sudo apache2-ssl-certificate -days 365
Vastaile tuleviin kysymyksiin.
Aktivoidaan SSL-moduuli
sudo 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
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
Lisää kahdelle ensimmäiselle riville porttinumerot tähän tapaan:
NameVirtualHost *:443 <virtualhost *:443>
Ja laita <virutalhost *:443>-tagin sisään rivit:
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem
Aktivoidaan asetukset.
sudo a2ensite ssl
Lopuksi käynnistetään Apache uusiksi, jotta kaikki muutokset tulevat voimaan.
sudo /etc/init.d/apache2 force-reload
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.
sudo 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://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.
Muutokset tulevat voimaan käynnistämällä Apache uusiksi.
sudo /etc/init.d/apache2 force-reload