วิธีการปิดการใช้งานการเข้าถึง https ไปยังโฮสต์เสมือนที่เฉพาะเจาะจงได้อย่างไร


10

เอาล่ะฉันมีเซิร์ฟเวอร์ Apache ตั้งค่าด้วยคำสั่งต่อไปนี้:

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>

ดังนั้น example1.com มีการสนับสนุน SSL และสามารถเข้าถึงได้ผ่านทาง http: // example1.com หรือ https: // example1.com อย่างไรก็ตามสิ่งนี้มีผลข้างเคียงโดยไม่ตั้งใจจากการแสดง https: // example1.com เมื่อฉันไปที่ https: // example2.com ในเบราว์เซอร์ของฉัน สิ่งที่ฉันต้องการทำคือปิดการใช้งาน https: // example2.com อย่างใดอย่างหนึ่งหรือส่งตรงไปที่ http: // example2.com อีกครั้งดังนั้นฉันจึงไม่ได้รับคำเตือนและเว็บไซต์ผิดเมื่อฉันเข้าชม

คำตอบ:


7

คุณจะไม่สามารถหลีกเลี่ยงการได้รับคำเตือนเว้นแต่ว่าตัวอย่าง 1 และตัวอย่าง 2 อยู่ในที่อยู่ IP ที่แตกต่างกันหรือคุณได้รับใบรับรอง SSL ที่ครอบคลุมทั้งสองชื่อ - หน้าข้อผิดพลาดหรือการเปลี่ยนเส้นทางจะไม่เกิดขึ้นจนกว่าจะมีการสร้างการเชื่อมต่อ SSL

ที่ถูกกล่าวบางสิ่งตามสายเหล่านี้ควรทำงาน:

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>

ขอบคุณ! ฉันคิดว่าฉันขาดคำสั่ง NameVirtualHost และ Apache คิดว่าฉันพยายามทำให้โฮสต์เสมือนสองรายการขัดแย้งกัน น่าสนใจ Chrome ไม่ได้ส่งคำเตือนเกี่ยวกับการเปลี่ยนเส้นทางนี้ ... แต่ฉันไม่กังวลเกี่ยวกับสิ่งนั้นเพียงแค่ไม่ต้องการให้เว็บไซต์ SSL ของฉันแสดงภายใต้ชื่อโดเมนอื่น
nearengine

ไม่เหมือนกับการเพิ่ม certs ที่ไม่ถูกต้องในการย้อนกลับไปยัง non-ssl? ฉันเดาว่าคุณสามารถผนวก _fake เข้ากับชื่อ certs ได้โดยตรงบน vhost directive ของคุณ
m3nda

0

ฉันไม่คิดว่าคุณควรใส่: 443 ใน ServerName example1.com:443

สิ่งเหล่านี้ควรถูกกำหนดค่าอย่างถูกต้อง

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

0

คุณต้องมีการระบุชื่อเซิร์ฟเวอร์ (SNI) เพื่อทำสิ่งนี้ให้สำเร็จ โปรดอ้างอิงลิงค์: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNIสำหรับรายละเอียด


1
ได้รับการโหวตลงเพราะคุณไม่ได้ให้คำตอบหรือตัวอย่างเช่นเฉพาะการเชื่อมโยง (ซึ่งไม่ได้รับประกันว่าจะมีอย่างถาวร)
คริสบลูม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.