Wednesday, May 22, 2013

Mengaktifkan Lebih dari Satu SSL Virtual Host Pada Apache

wihartoyo wihartoyo     Wednesday, May 22, 2013     No comments

Untuk beberapa keperluan, mungkin kita dihadapkan pada pilihan untuk menggunakan wildcard SSL Certificate yang memungkinkan 1 sertifikat SSL bisa digunakan untuk banyak sub domain.  Secara ekonomis, wildcard SSL Certificate memang menjadi jauh lebih murah apabila kita mempunya banyak sub domain yang akan dilindungi.  Namun, ini mungkin akan menimbulkan sedikit kesulitan bagi orang yang harus menginstall sertifikat tersebut apabila beberapa sub domain tersebut dijalankan pada satu server, satu ip, dan satu service apache (kita hanya akan membahas Apache).

Jamaknya, installasi sub domain pada server apache menggunakan direction (tag) <VirtualHost ip:port="">.  Namun masalah akan muncul bila kita sebelumnya sudah terbiasa dengan membuat virtual host untuk http (port 80) dan akan mencoba membuat virtual host untuk https (port 443).  Karena kita akan cenderung untuk melakukan hal yang biasa dibuat untuk port 80 kepada penyiapan SSL virtual host.  Bila hanya ada 1 SSL virtual host, apache will work properly. Namun bila kita harus menyiapkan  lebih dari 1 SSL virtual host, masalah baru akan muncul. Server tidak bisa dijalankan, dan bila kita buka log maka akan muncul seperti ini:


[Tue May 21 11:59:52 2013] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443
no listening sockets available, shutting down


Meskipun pada beberapa blog telah diuraikan bahwa, mulai Apache ver. 2.2.12, dukungan untuk memasang lebih dari satu SSL site pada satu IP (yang tentunya dilakukan dengan pendfinisian VirtualHost) dengan kemampuan yang disebut SNI (Server Name Indication). Namun, kenyataan yang ditemui seringkali tidak seindah yang diharapkan. Error message seperti di atas masih muncul dan server refuse our command to run. It make the technicians entering the crazy state. Even the have set SSLStrictSNIVHostCheck keyword disabled (although the default value is off or disabled). Wis kon... kapokmu kapan kon.

Setelah berusaha menjelajah alam internet dengan senantiasa marak sowan kepada mBah Gugel, akhirnya ketemu juga permasalahannya. Ternyata, kuncinya itu ada pada konfigurasi openssl nya. Nah lo... Jadi ini masalahnya ada pada SAN (Subject Based Alternative Name) extension. Jadi masalahnya bukan di Apache nya tapi di OpenSSL nya.

Extension ini diperkenalkan pertama kali pada tahun 1999. Dan sampai saat ini hampir semua browser sudah mensupport ini. Konfigurasinya juga gak susah karena konfigurasi defaultnya sudah support ini, cuma harus ditambah beberapa perbaikan sahaja. Untuk kasus saya (Ubuntu Server 12.0.4) file konfigurasi ada di /etc/ssl/openssl.conf.

req_extensions
Pertama kali, sampeyan harus membuka kommen dari req_extension. Line ini diperlukan untuk meload v3_req extension.

.
.
.
# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
# so use this option with caution!
string_mask = nombstr

req_extensions = v3_req # The extensions to add to a certificate request &lt-- unquote this line please

[ req_distinguished_name ]
countryName = Country Name (2 letter code)
.
.
.



v3_req
Untuk extension ini, sampeyan harus menentukan altSubjectName, eh salah subjectAltName. Perhatikan bagian yang diblok abu-abu.

[ v3_req ]

# Extensions to add to a certificate request

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names


alt_names
Ini adalah bagian yang akan menunjukkan sub domain mana saja yang akan didata sebagai subject alternative names.


[ alt_names ]
DNS.1 = dns1.domain.com
DNS.2 = dns2.domain.com
dst....


Sudah.....
Yap emang sudah, karena sekarang kita bisa mengkonfigurasi SNI dengan multiple SSL virtual host dan ehmmmm.... menjalankan Apache nya tanpa error. Monggo......!

,

0 komentar :

Berita PostgreSQL

Recommended