Kako forsirati SSL samo na određenim dijelovima web stranica?

U ovom članku opet ćemo se baviti web poslužiteljem Apache i SSL-om. Jedan od često postavljanih, a dosad nepokrivenih pitanja je kako forsirati SSL na određenom dijelu weba, ili kako preusmjeriti ne-SSL zahtjeve na neki drugi SSL VHOST.

Podrazumijevamo da je sve što se tiče SSL-a ispravno podešeno (certifikat je ispravan, poželjno je da je potpisan od strane nekog CA, SSL je uključen na VHOST-u i slično), te da se vašim stranicama može pristupati preko prefiksa https://.

Za preusmjeravanje možemo rabiti redirekciju, ili upotrijebiti popularne Redirect direktive. Uzet ćemo gotovi primjer, iz našeg paketa squirrelmail-cn, pa ćemo imati primjer iz zaista svima poznatog i dostupnog paketa.

# Force SSL for /webmail -> you can still use /squirrelmail
Alias /webmail /usr/share/squirrelmail

<IfModule mod_rewrite.c>
<IfModule mod_ssl.c>
<Location /webmail>
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L]
</Location>
</IfModule>
</IfModule>

S naredbom "RewriteEngine on" uključujemo Rewrite modul, dok sa RewriteCond provjeravamo je li SSL uključen. Ukoliko SSL nije uključen, a pokušamo rabiti Rewrite direktive, dobit ćemo poruku o grešci i web stranice neće raditi.

Glavni posao obavlja direktiva RewriteRule: ona će preusmjeriti bilo koji zahtjev (".") na https://, a samu adresu i URL će složiti iz originalnog zahtjeva. Na kraju je zastavica ("flag") "[L]", koja znači jednostavno "Last" i zaustavlja procesiranje eventualnih dodatnih RewriteRule direktiva. U suprotnom, u određenim situacijama bi moglo doći do beskonačne petlje u procesiranju Rewrite direktiva.

Ovaj se primjer nalazi u datoteci /etc/squirrelmail/apache.conf, koja je simbolički povezana u konfiguracijskom direktoriju apacheja:

# ls -l /etc/apache2/conf.d/squirrelmail-cn.conf
lrwxrwxrwx 1 root root 29 Feb 20 2008
/etc/apache2/conf.d/squirrelmail-cn.conf -> /etc/squirrelmail/apache.conf

Ovo navodimo jer će na ovaj način redirekcija, odnosno prepisivanje URL-ova preko Rewrite direktiva biti dostupna u svim VHOST-ovima, pa pripazite da navedeni VHOST ima uključenu podršku za SSL.

Na sličan način vi možete preusmjeriti dio weba na sigurnu SSL konekciju, samo stavite konfiguraciju unutar direktorija /etc/apache2/conf.d/, ili simbolički povežite datoteku koja se zapravo nalazi na nekom drugom mjestu:

# ln -s /etc/mojprogram/apache.conf /etc/apache2/conf.d/mojprogram.conf 

Na kraju obavezno napravite reload ili restartajte apache:

# /etc/init.d/apache reload

Sad će svaki poziv stranici http://www.domena.hr/webmail biti preusmjeren na https:// inačicu iste te stranice. Ostale stranice će raditi uobičajeno (obratite pažnju na direktivu "Location" koja određuje ovakvo ponašanje, da ne biste obuhvatili više vašeg weba nego što treba).

Još dosta trikova oko preusmjeravanja sa ne-SSL na SSL stranice ili druge VHOST-ove potražite na adresi:

http://www.askapache.com/htaccess/ssl-example-usage-in-htaccess.html

 

Vote: 
5
Vaša ocjena: Nema Average: 5 (2 votes)