ฉันเพิ่งได้รับใบรับรอง SSL สำหรับไซต์หลักของฉัน ( https://wemarsh.com/ ) มันใช้งานได้ดีมากและฉันยังได้ตั้งค่ากฎ. htaccess เพื่อให้การรับส่งข้อมูลทั้งหมดในไซต์นั้นถูกเข้ารหัส (ฉันใช้งาน Apache)
อย่างไรก็ตามฉันยังมีเว็บไซต์อื่น ๆ บนเซิร์ฟเวอร์เดียวกันนี้ด้วยที่อยู่ IP เดียวกัน ตัวอย่างเช่นฉันมีบล็อก ( http://gallivant.wemarsh.com/) มันใช้งานได้ดีตราบใดที่ฉันเชื่อมต่อกับเวอร์ชันที่ไม่ได้เข้ารหัส ฉันไม่ต้องการเปิดใช้งานการเข้ารหัสสำหรับเว็บไซต์นี้เนื่องจากฉันรู้ว่าใบรับรองที่มีอยู่ของฉันไม่รวมโดเมนย่อยนั้นและฉันไม่ต้องการจ่ายสำหรับที่อยู่ IP เพิ่มเติมให้ทำเช่นนั้น ดังนั้นทั้งหมดจะดีถ้าผู้ใช้พิมพ์ http: // แต่ถ้าผู้ใช้พิมพ์ https: // (ไม่ว่าด้วยเหตุผลใดก็ตาม) คำเตือนจะปรากฏขึ้นโดยบอกว่าไซต์นั้นเป็นตัวแอบอ้าง (ตามที่คาดไว้เพราะใบรับรองผิด) แต่ถ้าผู้ใช้คลิกเพื่อดำเนินการต่อก็จะนำพวกเขาไปยังเว็บไซต์หลักแทนบล็อกบนโดเมนย่อย นี่เป็นสถานการณ์ที่แทบจะไม่เกิดขึ้นจริงในทางปฏิบัติ แต่ฉันรู้สึกว่าพฤติกรรมที่ถูกต้องคือการให้คำเตือนและจากนั้นไปที่ไซต์ "แอบอ้าง" ที่ถูกต้อง หรืออาจจะดีกับฉันถ้ามันล้มเหลวอย่างสมบูรณ์
ฉันเข้าใจปัญหาบางอย่างในการเล่น ก่อนอื่นฉันเข้าใจว่าสิ่ง SSL เกิดขึ้นก่อนที่ Apache จะได้รับคำขอซึ่งเป็นเหตุผลว่าทำไมไม่สามารถมีหลาย certs บนที่อยู่ IP เดียวกัน ดูเหมือนว่าจะป้องกันไม่ให้ฉันเพียงแค่ใช้กฎ. htaccess เพื่อส่งต่อทุกคนไปยังเว็บไซต์ http: // เวอร์ชัน (ตรงข้ามกับสิ่งที่ฉันทำบนไซต์หลัก)
ดังนั้นวิธีที่ฉันเข้าใจสิ่งที่เกิดขึ้นคือ: SSL จัดการการร้องขอใบรับรองโดยส่งคืนใบรับรองที่ไม่ถูกต้องไปยังเบราว์เซอร์ เบราว์เซอร์หยุดชะงัก แต่ช่วยให้เราสามารถดำเนินการต่อไป จากนั้น Apache ไม่ทราบว่ามีการร้องขอ URL ใด แต่รู้ว่าเป็นพอร์ต 443 ดังนั้นจึงส่งคืนไซต์หลัก เบราว์เซอร์คิดว่ามีบล็อกโดเมนย่อยดังนั้นจึงยังคงแสดง URL นั้น
vhosts ปัจจุบันของฉันสำหรับเว็บไซต์หลักเป็นดังนี้:
<VirtualHost *:80>
ServerAdmin redacted@wemarsh.com
ServerName www.wemarsh.com
ServerAlias wemarsh.com
DirectoryIndex index.html
DocumentRoot redacted
</VirtualHost>
<VirtualHost *:443>
ServerAdmin redacted@wemarsh.com
ServerName www.wemarsh.com
ServerAlias wemarsh.com
SSLEngine on
SSLCertificateFile redacted
SSLCertificateKeyFile redacted
SSLCertificateChainFile redacted
SSLCACertificateFile redacted
DirectoryIndex index.html
DocumentRoot redacted
</VirtualHost>
vhost ปัจจุบันของฉันสำหรับบล็อกย่อยเป็นดังนี้:
<VirtualHost *:80>
ServerAdmin redacted@wemarsh.com
ServerName gallivant.wemarsh.com
DirectoryIndex index.php
DocumentRoot redacted
</VirtualHost>
ฉันพยายามกำหนดพอร์ต 443 ใน vhosts สำหรับโดเมนย่อย แต่นั่นไม่ได้ผล
เป็นไปได้ไหมที่จะทำสิ่งที่ฉันพยายามจะทำ? ไม่มีใครมีทางออกหรือไม่? ในอนาคตบางสถานการณ์จะมีความซับซ้อนมากขึ้นเมื่อฉันเพิ่มที่อยู่ IP เพิ่มเติมและใบรับรองอื่นไปยังเซิร์ฟเวอร์ดังนั้นโปรดระลึกไว้เสมอเมื่อทำการแนะนำ
ฉันคิดว่าผู้ให้บริการโฮสติ้งที่ใช้ร่วมกันต้องทำสิ่งนี้ไม่เช่นนั้นไซต์ที่ไม่ใช่ https ทั้งหมดจะพังใช่ไหม
(หมายเหตุ: ฉันไม่ได้ตั้งใจลิงก์ไปยังรุ่น https ของ gallivant สิ่งสุดท้ายที่ฉันต้องการคือ Google นำผู้คนไปยังจุดบกพร่องนี้ดังนั้นโปรดหลีกเลี่ยงการลิงก์ในการตอบกลับของคุณ)
ขอบคุณล่วงหน้า!