Apache SSL VirtualHosts pada IP tunggal menggunakan sertifikat UCC / SAN

11

Saya perlu meng-host beberapa host virtual Apache dengan SSL dari satu IP.

Sekarang - saya mengerti bahwa karena SSL membungkus permintaan HTTP, tidak ada cara untuk mengetahui host mana yang diminta sampai kunci publik telah dikirim ke klien terlebih dahulu. Ini pada dasarnya mematahkan kemungkinan host virtual SSL menggunakan sertifikat SSL standar.

Saya telah memperoleh Sertifikat Komunikasi Terpadu (UCC), atau dikenal sebagai sertifikat Nama Alternatif Subjek (SAN). Ini memungkinkan saya untuk melayani sertifikat yang sama untuk banyak domain.

Saya ingin ini menjadi sertifikat yang dilayani oleh Apache untuk setiap permintaan SSL - dan kemudian minta Apache menyelesaikan virtual host seperti biasa, setelah enkripsi dibuat.

Bagaimana saya mengkonfigurasi Apache untuk ini? Saya telah mencoba untuk meneliti bagaimana hal ini dapat dilakukan, tetapi yang dapat saya temukan hanyalah kutipan yang mengatakan bahwa itu mungkin, tetapi tidak ada yang spesifik:


wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Meskipun Apache dapat menegosiasikan kembali koneksi SSL nanti setelah melihat nama host dalam permintaan (dan memang), itu sudah terlambat untuk memilih sertifikat server yang tepat untuk digunakan untuk mencocokkan nama host permintaan selama jabat tangan awal, menghasilkan peringatan browser / kesalahan tentang sertifikat yang memiliki nama host salah di dalamnya.

serverfault.com/questions/48334/apache-virtual-hosts-with-ssl

Secara kebetulan, dimungkinkan untuk memiliki beberapa host virtual aman bernama SSL pada satu alamat IP - saya melakukannya di situs web saya - tetapi menghasilkan semua jenis peringatan di log Apache, dan peringatan sertifikat di browser. Saya pasti tidak akan merekomendasikannya untuk situs produksi yang perlu terlihat bersih. -Hapus 31 Jul pada jam 4:58

www.digicert.com/subject-alternative-name.htm

Virtual Host Beberapa situs SSL pada satu alamat IP. Hosting beberapa situs yang mendukung SSL pada satu server biasanya memerlukan alamat IP unik per situs, tetapi sertifikat dengan Nama Alternatif Subjek dapat mengatasi masalah ini. Microsoft IIS 6 dan Apache keduanya dapat situs Virtual Host HTTPS menggunakan Unified Communications SSL, juga dikenal sebagai sertifikat SAN.


Tolong bantu.

Mikuso
sumber

Jawaban:

13

Saya menguji ini pada contoh apache 2.2.14 saya dan itu bekerja dengan baik:

Gunakan direktif NameVirtualHost (ke ports.conf):

NameVirtualHost *:443

tentukan vhosts Anda:

<VirtualHost *:443>
  ServerName www.siteA.com
  DocumentRoot "/opt/apache22/htdocs/siteA"
  SSLCertificateFile "/path/to/my/cert"
  SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>
<VirtualHost *:443>
  ServerName www.siteB.com
  DocumentRoot "/opt/apache22/htdocs/siteB"
  SSLCertificateFile "/path/to/my/cert"
  SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>

Saya menggunakan tautan ini sebagai sumber.

mikah
sumber
1
Jawabannya benar. Satu hal yang membuat saya tersandung waktu LOOOONNNNNNGGGGG adalah bahwa saya memiliki kesalahan ketik di mana saya punya <Virtual *:433>... port yang benar adalah 443! Ugh, berjam-jam hidup saya hilang pada yang satu ini ... Semoga rasa sakit saya tidak sia-sia dan ini membantu seseorang ...
Nick P.