Server Name Identification (SNI) adalah perpanjangan dari protokol Secure Socket Layer (SSL) dan TransportLayer Security (TLS) yang memungkinkan Anda untuk meng-host beberapa sertifikat SSL pada satu alamat Internet Protocol (IP) unik. Artikel ini menjelaskan cara menggunakan SNI untuk menghosting beberapa sertifikat SSL di Apache®.
Prasyarat
Server Anda harus memenuhi persyaratan berikut untuk menggunakan SNI:
- Apache v2.2.12 atau lebih baru
- OpenSSL® v 0.9.8j atau lebih baru
- mod_ssl harus diinstal
Sistem operasi berikut mendukung SNI tanpa modifikasi tambahan:
- Red Hat® Enterprise Linux® (RHEL) 6 dan yang lebih baru
- Fedora® 10 dan yang lebih baru
- CentOS® 6
- Debian® 6 dan yang lebih baru
- Ubuntu® 10.04 dan yang lebih baru
Sistem operasi berikut memerlukan Apache, OpenSSL, dan mod_ssl untuk dikompilasi dengan versi yang tepat:
- Red Hat Enterprise Linux 5
- Centos 5
Periksa apakah mod_ssl sudah terpasang
Sebelum menggunakan SNI, pastikan mod_ssl sudah terinstal dengan menjalankan perintah berikut:
RHEL, CentOS, dan Fedora
yum list installed | grep mod_ssl
Sistem operasi Debian dan Ubuntu
dpkg -s apache2.2-common
Jika mod_ssl tidak diinstal, gunakan perintah berikut untuk menginstalnya:
RHEL, CentOS, dan Fedora
yum install mod_ssl
Sistem operasi Debian dan Ubuntu
Untuk sistem operasi Debian dan Ubuntu, instal mod_ssl dengan menggunakan perintah berikut:
apt-get install apache2.2-common
Kemudian aktifkan modul dengan menjalankan a2enmod ssl; /etc/init.d/apache2 reload
.
Siapkan vhost
Tambahkan baris berikut di file konfigurasi root Apache Anda (apache2.conf atau httpd.conf ):
# Ensure that Apache listens on port 443
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443
# Accept connections for these vhosts from non-SNI clients
SSLStrictSNIVHostCheck off
Dalam file konfigurasi vhost untuk setiap situs, Anda harus menambahkan konfigurasi virtual host Anda. Seharusnya terlihat seperti contoh berikut:
Vhost pertama:
<VirtualHost *:443>
ServerName www.yoursite.com
DocumentRoot /var/www/site
SSLEngine on
SSLCertificateFile /path/to/www_yoursite_com.crt
SSLCertificateKeyFile /path/to/www_yoursite_com.key
SSLCertificateChainFile /path/to/DigiCertCA.crt
</Virtual Host>
Vhost kedua:
<VirtualHost *:443>
ServerName www.yoursite2.com
DocumentRoot /var/www/site2
SSLEngine on
SSLCertificateFile /path/to/www_yoursite2_com.crt
SSLCertificateKeyFile /path/to/www_yoursite2_com.key
SSLCertificateChainFile /path/to/DigiCertCA.crt
</Virtual Host>
Anda dapat menguji konfigurasi dengan sertifikat yang ditandatangani sendiri dengan menggunakan perintah berikut:
openssl req -new -nodes -keyout mykey.key -out mycert.cer -days 3650 -x509
Tentukan nama domain di Nama Umum bagian, lalu restart Apache.
Browser yang didukung
SNI didukung oleh sebagian besar browser, namun browser lama seperti Internet Explorer® 6 dan browser Windows® XP® apa pun tidak mendukung SNI.
Peramban desktop
-
Internet Explorer 7 dan yang lebih baru
-
Firefox® 2 dan yang lebih baru
-
Opera 8 dengan TLS 1.1 diaktifkan
-
Google Chrome®:
- Didukung pada Windows XP pada Chrome 6 dan yang lebih baru
- Didukung di Vista dan yang lebih baru secara default
- Didukung pada OS X 10.5.7 di Chrome Versi 5.0.342.0 dan yang lebih baru
-
Chromium® 11.0.696.28 dan yang lebih baru
-
Safari 2.1 dan yang lebih baru (memerlukan OS X 10.5.6 dan yang lebih baru atau Windows Vista dan yang lebih baru).
Catatan: Tidak ada versi Internet Explorer di Windows XP yang mendukung SNI.
Browser seluler
- Safari Seluler untuk iOS 4.0 dan yang lebih baru
- Android 3.0 (Honeycomb) dan yang lebih baru
- Windows Phone 7 dan yang lebih baru
Browser tidak didukung
Browser yang tidak didukung memuat sertifikat SSL dari vhost pertama yang dimuat Apache. Anda dapat menampilkan kesalahan 403 sebagai gantinya dengan menambahkan baris berikut ke file konfigurasi Apache (apache2.conf , atau httpd.conf ):
SSLStrictSNIVHostCheck on