Debian Apache2 SNI

Bizonyára sokan emlékeztek még arra az időszakra, amikor egy szerveren több domain-nak is otthont biztosítottunk, de csak egy domain-hez állíthattunk be SSL tanúsítványt, amennyiben 1 db publikus IP címmel rendelkeztünk. Ennek a korlátnak a feloldására jelent megoldást a böngészők és az Apache2 SNI (Server Name Indication) támogatása.

A böngészőknek támogatni kell az SNI-t és a mai, népszerű böngészőkben meg van ez a támogatás (Forrás).

Asztali böngészők:

  • Mozilla Firefox 2.0 or later
  • Opera 8.0 or later (with TLS 1.1 enabled)
  • Internet Explorer 7.0 or later (on Vista, not XP)
  • Google Chrome
  • Safari 3.2.1 on Mac OS X 10.5.6

Mobil böngészők:

  • Mobile Safari for iOS 4.0
  • Android 3.0 (Honeycomb) and later
  • Windows Phone 7

Szerver oldalon van néhány előfeltétel, Apache és OpenSSL (minimum) verziókat illetően:

  • Apache v2.2.12
  • OpenSSL v0.9.8j

Ha a feltételek adottak, akkor nincs más dolgunk mint engedélyezni az SNI-t. Ezt megtehetjük a /etc/apache2/mods-available/ssl.conf állományban.

Írjuk át a következő sort:

SSLStrictSNIVHostCheck Off

Erre:

SSLStrictSNIVHostCheck On

Ha nincs engedélyezve az SSL modul, akkor tegyük meg:

ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf 
ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load 

A /etc/apache2/ports.conf állományba szúrjuk be a következőt:

<IfModule mod_ssl.c>
    Listen 443
    NameVirtualHost *:443
</IfModule>

Indítsuk újra az Apache-ot:

/etc/init.d/apache2 restart

Ezután már a megszokott módon tudunk létrehozni name virtual hostokat:

<VirtualHost *:443>
    ServerName example.org
    ServerAlias example.org
    DocumentRoot /var/www/example.org
    ErrorLog /var/log/apache2/example.org_error_ssl.log
    SSLEngine on
    SSLProtocol all
    SSLVerifyClient none
    SSLProxyEngine off
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL

    SSLCertificateFile       /etc/apache2/ssl/example.org/2_example.crt
    SSLCertificateKeyFile    /etc/apache2/ssl/example.org/example.key
    SSLCertificateChainFile  /etc/apache2/ssl/example.org/1_root_bundle.crt
    CustomLog /var/log/apache2/example.org_access_ssl.log combined
</VirtualHost>

Domain2:

<VirtualHost *:443>
    ServerName example2.org
    ServerAlias example2.org
    DocumentRoot /var/www/example2.org
    ErrorLog /var/log/apache2/example2.org_error_ssl.log
    SSLEngine on
    SSLProtocol all
    SSLVerifyClient none
    SSLProxyEngine off
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL

    SSLCertificateFile       /etc/apache2/ssl/example2.org/2_example.crt
    SSLCertificateKeyFile    /etc/apache2/ssl/example2.org/example.key
    SSLCertificateChainFile  /etc/apache2/ssl/example2.org/1_root_bundle.crt
    CustomLog /var/log/apache2/example.org_access_ssl.log combined
</VirtualHost>

Aldomain:

<VirtualHost *:443>
    ServerName subdomain.example.org
    ServerAlias subdomain.example.org
    DocumentRoot /var/www/subdomain.example.org
    ErrorLog /var/log/apache2/subdomain.example.org_error_ssl.log
    SSLEngine on
    SSLProtocol all
    SSLVerifyClient none
    SSLProxyEngine off
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL

    SSLCertificateFile       /etc/apache2/ssl/subdomain.example.org/2_example.crt
    SSLCertificateKeyFile    /etc/apache2/ssl/subdomain.example.org/example.key
    SSLCertificateChainFile  /etc/apache2/ssl/subdomain.example.org/1_root_bundle.crt
    CustomLog /var/log/apache2/subdomain.example.org_access_ssl.log combined
</VirtualHost>

 

Hozzászólás

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük