Beberapa domain dengan SSL pada IP yang sama

Jawaban:

28

Saya pikir ini adalah ide yang bagus bagaimana menjelaskan masalah sebenarnya dengan host virtual dan SSL / TLS.

Saat Anda terhubung ke server apache melalui HTTP, Anda mengirim satu set header http bersama. Mereka terlihat seperti ini:

GET /index.html HTTP/1.1
 Host: www.nice-puppies.com

Jika Anda memiliki apache hosting virtual akan melihat bidang host, lalu ambil index.html yang tepat untuk Anda. Masalahnya adalah ketika Anda menambahkan SSL / TLS. Server mengatur enkripsi sebelum Anda mengirim permintaan http Anda. Karenanya server tidak tahu apakah Anda akan mengunjungi www.nice-puppies.com atau www.evil-haxxor.com hingga setelah otentikasi / enkripsi selesai. Server tidak dapat menebak (karena mengirim sertifikat yang salah memberi Anda pesan kesalahan buruk).

Salah satu solusinya adalah sertifikat wildcard (seperti yang disebutkan di atas), yang berlaku untuk * .nice-puppies.com. Dengan begitu Anda dapat menggunakan sertifikat yang sama untuk beberapa domain, tetapi Anda tidak dapat memiliki sertifikat * .com (oke, Anda bisa, tetapi itu akan sangat buruk untuk semua orang), jadi secara umum Anda akan memerlukan IP terpisah untuk masing-masing Domain HTTPS.

pehrs
sumber
4
Penjelasan yang bagus, tetapi Anda dapat memiliki sertifikat UC yang akan memungkinkan banyak domain dalam satu sertifikat
Sam Cogan
1
Ya, Anda dapat memiliki Sertifikat Komunikasi Terpadu (sertifikat UCC / UC). Saya mungkin harus menyebutkannya. Mereka, sejauh yang saya lihat, sebagian besar digunakan dengan Exchange / Office Communication Server. Dan jika Anda menggunakan sertifikat yang sama untuk situs yang berbeda, Anda menyalahgunakan semantik x509. Tetapi mereka bekerja pada kebanyakan tumpukan TLS.
pehrs
6
Juga SNI. Pernyataan Anda tidak lagi definitif, pehrs. Penjelasan Anda secara historis akurat tetapi tidak lagi mencerminkan teknologi saat ini.
Warner
4
SNI tidak (belum?) Berfungsi dengan IE6 pada Windows XP. Yang mana semacam membatasi nilainya, mengingat pangsa pasar. Saya percaya pengguna asli lebih tertarik pada apa yang akan terjadi daripada serangkaian peretasan yang ada untuk menyiasatinya.
pehrs
Mencoba memperbaiki kesalahan pengejaan pada akhirnya SHTTP ke HTTPS tetapi ini ditolak karena pengeditan terlalu kecil.
Stuart
8

Solusi nyata untuk masalah ini adalah "Indikasi Nama Server":

http://en.wikipedia.org/wiki/Server_Name_Indication

Ini hanya mulai diluncurkan ke server dan klien web, jadi ini bukan sesuatu yang benar-benar dapat Anda gunakan sekarang, tapi mudah-mudahan dalam waktu beberapa tahun ini tidak akan menjadi masalah besar.


sumber
2

Masalahnya adalah bahwa sertifikat SSL terikat ke alamat IP bukan nama host. Ketika koneksi masuk pada alamat IP untuk permintaan HTTPS, tindakan pertama adalah membangun komunikasi SSL dengan melewati sertifikat server dan / atau sertifikat klien. Selama tahap jabat tangan koneksi ini, server Apache tidak memiliki cara untuk mengetahui untuk apa permintaan akan datang. Ini berbeda untuk lalu lintas HTTP (non-SSL) karena setelah koneksi dibuat server Apache dapat menentukan konfigurasi host virtual untuk digunakan jika klien mengirim Hostheader atau menyerahkannya ke host virtual pertama yang dikonfigurasi.

Jika Anda memiliki beberapa host virtual di bawah domain yang sama, Anda dapat mengatur sertifikat wildcard tunggal pada alamat IP dan memiliki beberapa host virtual dengan nama server yang berbeda ditentukan; namun, jika nama server tersebut tidak di bawah nama domain yang sama mereka akan menghasilkan kesalahan server klien. Ini akan berfungsi karena sertifikat wildcard akan valid untuk semua nama host di bawah nama domain itu. Anda akan memerlukan alamat IP lain jika nama domain berbeda karena sertifikat pertama yang ditentukan untuk alamat IP tersebut akan menjadi yang disajikan untuk menghubungkan klien.

Jeremy Bouse
sumber
1

Ini dapat ditambahkan ke dalam satu sertifikat ssl tunggal sebagai SAN (Nama Alternatif Subjek). Dalam pengalaman saya, saya harus meminta sertifikat organisasi. saya menggunakan globalsign.


sumber
1

Sebenarnya, dengan perangkat lunak modern Anda BISA melayani beberapa situs HTTPS melalui satu alamat IP, menggunakan fitur baru yang disebut 'SNI - Server Name Indication'.

http://en.wikipedia.org/wiki/Server_Name_Indication

http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Saya belum pernah menggunakan ini sendiri, tetapi kedengarannya bagus untuk situs internal dan intranet. Sebagian besar browser modern mendukung SNI. IE6 tidak mendukung SNI, tetapi IE7 mendukung.

(Koreksi: 20100426 - SNI sama sekali tidak didukung pada Windows XP. Windows Vista dan di atasnya mendukung SNI. Lihat "Bagian 2.2.3" di http://msdn.microsoft.com/en-us/library/dd208005% 28v = PROT.13% 29.aspx # id8 ).

Stefan Lasiewski
sumber
2
Dengan IE, dukungan tidak datang dari versi IE, melainkan berasal dari versi OS yang mendasarinya. Vista dan di atas mendukung SNI. XP tidak, bahkan dengan IE8 di XP, Anda tidak akan mendapatkan SNI.
Nasko
1

Saya sedang mengerjakan masalah yang sama. Sebagai pengujian saya, IE7 dan yang lebih baru (Hanya di Win7 & Vista) / Chrome / Firefox / Safari / Opera mendukung "Indikasi Nama Server". Bahkan, jika browser menggunakan Tsl 1.0, itu mendukung "Indikasi Nama Server".

Sean
sumber
0

Saya pikir OP menanyakan apa yang terjadi jika dia menambahkan sertifikat SSL ke IP yang memiliki banyak host virtual. Jika tidak ada virtualhost lain yang menggunakan sertifikat SSL maka ia harus jelas.

Iraklis
sumber
baik saya bingung dengan pertanyaan itu. Judul Q mengatakan hitam isinya mengatakan putih.
Iraklis
ini yang putih
Iraklis
0

Jika Anda akan mencoba menambahkan dua sertifikat pada IP yang sama, hanya sertifikat baca pertama yang akan digunakan di mana-mana. Satu IP - satu sertifikat SSL.

Jika Anda ingin mendapatkan lebih banyak sertifikat SSL pada IP yang sama, pertimbangkan untuk mendapatkan beberapa domain (disebut UCC - lihat di @ godaddy ) atau sertifikat wildcard (lebih mahal).

Andrejs Cainikovs
sumber
Maksud Anda sertifikat yang pertama kali ditambahkan dalam konfigurasi Apache akan digunakan untuk keduanya?
nitins
1
Jika Anda memiliki dua sertifikat - untuk situs A dan B, dan konfigurasi apache memuat untuk host dalam urutan A.conf, lalu B.conf, maka akan menggunakan sertifikat dari A.conf. Atau sebaliknya.
Andrejs Cainikovs