Găzduirea mai multor site-uri cu SSL pe același IP

Poate părea o rezolvare prostească și sunt convins că există multe alte metode mai elegante pentru a rezolva situația cu pricina.

M-am mai lovit de necesitatea găzduirii mai multor site-uri pe același server, toate având nevoie de SSL și neavând la dispoziție decât  o singură adresă IP.
Unde s-a putut am actualizat Apache și OpenSSL ca să permtiă SNI. Numai că uneori din varii motive nu m-am putut “atinge” de configurările serverului, sau am avut parte de probleme datorate navigatoarelor folosite de utilizatori…
Partea bună e că problemele nu apar pe servere aflate în producție și de cele mai multe ori, cerințele-s doar temporare.

Astăzi am găsit pe forumul Ubuntu niște discuții destul de vechi în urma cărora am reușit să compun o soluție care mi se potrivește ca o mănușă 🙂
Soluția este bazată pe minunea numită “rewrite” și o povestesc mai jos:

Am generat un certificat local în care la Common Name am pus *.domeniu.ro

Am făcut în directorul în care stau fișierele de configurare ale apache un fișier în care se vor mapa numele site-urilor și locațiile fizice (DocumentRoot) ale fișierelor – eu l-am numit host.ssl și arată cam așa:

site1.domeniu.ro /var/www/site1/
site2.domeniu.ro /var/www/site2/
site3.domeniu.ro /var/www/site3/

După asta am făcut un fișier de host virtual – vhost-ssl în care, pe lângă directivele specifice SSL (calea către certificat, opțiuni, calea către fișierele separate de log etc.) am pus următoarele:


RewriteEngine on

# am “forțat” formatarea adresei utilizate
RewriteMap lowercase int:tolower
#calea către fișierul host.ssl
RewriteMap vhost txt:/etc/apache2/host.ssl
#condiția pentru formatarea adresei
RewriteCond ${lowercase:%{HTTP_HOST}|NONE} ^(.+)$
#citesc din fișierul host.ssl
RewriteCond ${vhost:%1} ^(/.*)$
#suprascriu calea fizică
RewriteRule ^/(.*)$ %1/$1 [E=VHOST:${lowercase:%{HTTP_HOST}}]

După asta am restartat apache și asta a fost cam tot.

Acuma, trebuie să recunosc că nu mă așteptam să fie așa ușoară toată distracția… însă-mi aduc aminte că acum vreo doi ani, când am mai avut nevoie de asta… n-am dormit vreo săptămână căutând soluții… Ca într-un final să aflu că varianta OpenSSl care m-ar fi ajutat nu mergea cu apache pe 64bit și X,Y,Z…

Așa că articolul ăsta va fi trecut la “Nu uita!”

Leave a Reply

Your email address will not be published. Required fields are marked *

CommentLuv badge