Bagaimana cara menonaktifkan akses https ke host virtual tertentu?

10

Baiklah, jadi saya memiliki server Apache yang diatur dengan arahan berikut:

NameVirtualHost *:80

<VirtualHost *:80>  
ServerName example1.com  
ServerAlias www.example1.com  
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName example2.com
ServerAlias *.example2.com
DocumentRoot /var/www/example2
</VirtualHost>

<VirtualHost example1.com:443>
DocumentRoot /var/www/html
ServerName example1.com:443
SSLEngine on
...
</VirtualHosts>

Jadi example1.com memiliki dukungan SSL, dan dapat diakses baik melalui http: // example1.com atau https: // example1.com. Namun, ini memiliki efek samping yang tidak diinginkan dengan menampilkan https: // example1.com ketika saya mengunjungi https: // example2.com di browser saya. Apa yang ingin saya lakukan pada dasarnya adalah menonaktifkan https: // example2.com entah bagaimana atau mengarahkan kembali ke http: // example2.com jadi saya tidak mendapatkan peringatan dan situs yang salah ketika saya mengunjunginya.

nearengine
sumber

Jawaban:

7

Anda tidak akan dapat menghindari mendapat peringatan, kecuali example1 dan example2 berada pada alamat IP yang berbeda, atau Anda mendapatkan sertifikat SSL yang mencakup kedua nama - halaman kesalahan atau pengalihan tidak dapat terjadi sampai setelah koneksi SSL dibuat.

Yang sedang berkata, sesuatu di sepanjang garis ini harus bekerja:

NameVirtualHost *:443
<VirtualHost *:443>
  ServerName example1.com
  SSLEngine on
  #...
</VirtualHost>
<VirtualHost *:443>
  ServerName example2.com
  SSLEngine on
  # same certificate config here as on example1, unless you're wanting to use TLS SNI
  # then, let's redirect the user to non-SSL
  Redirect permanent / http://example2.com/
</VirtualHost>
Shane Madden
sumber
Terima kasih! Saya pikir saya melewatkan direktif NameVirtualHost dan Apache berpikir saya mencoba membuat dua host virtual saling bertentangan. Menariknya, Chrome tidak memberikan peringatan tentang pengalihan ini ... Tapi saya tidak khawatir tentang itu, hanya saja tidak ingin situs SSL saya muncul di bawah nama domain lain.
nearengine
Tidak sama dengan menambahkan sertifikat yang tidak valid ke fallback ke non-ssl? Saya kira Anda dapat langsung menambahkan _fake ke nama sertifikat pada arahan vhost Anda.
m3nda
0

saya tidak berpikir Anda harus meletakkan: 443 di ServerName example1.com:443

ini harus dikonfigurasi dengan benar

<VirtualHost example1.com:443> //change example1.com to ip address is a good habit
DocumentRoot /var/www/html
ServerName example1.com
SSLEngine on
...
</VirtualHosts>
tywtyw2002
sumber
0

Anda perlu memiliki Indikasi Nama Server (SNI) untuk mencapai hal ini. Silakan merujuk tautan: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI untuk detailnya.

Karthikeyan
sumber
1
Turut memberi suara karena Anda tidak memberikan jawaban atau contoh, hanya tautan (yang tidak dijamin ada di sana secara permanen)
Chris Bloom