Apache SSL VirtualHosts บน IP เดียวโดยใช้ใบรับรอง UCC / SAN


11

ฉันต้องโฮสต์ Apache โฮสต์เสมือนหลายแห่งพร้อม SSL จาก IP เดียว

ตอนนี้ - ฉันเข้าใจว่าเนื่องจาก SSL ล้อมรอบคำขอ HTTP จึงไม่มีทางรู้ได้ว่ามีการร้องขอโฮสต์ใดจนกว่าจะส่งรหัสสาธารณะให้กับลูกค้าก่อน สิ่งนี้จะทำลายความเป็นไปได้ของโฮสต์เสมือน SSL ที่ใช้ใบรับรอง SSL มาตรฐาน

ฉันได้รับ Unified Communications Certificate (UCC) หรือที่เรียกว่าใบรับรอง Subject Alternative Name (SAN) สิ่งนี้ทำให้ฉันสามารถแสดงใบรับรองเดียวกันสำหรับหลายโดเมนได้

ฉันต้องการให้เป็นใบรับรองที่ Apache ให้บริการสำหรับการร้องขอ SSL ใด ๆจากนั้นให้ Apache แก้ไขโฮสต์เสมือนตามปกติเมื่อมีการเข้ารหัสแล้ว

ฉันจะกำหนดค่า Apache สำหรับสิ่งนี้ได้อย่างไร ฉันได้พยายามค้นคว้าวิธีการนี้สามารถทำได้ แต่ทั้งหมดที่ฉันสามารถหาได้คือคำพูดที่บอกว่าเป็นไปได้ แต่ไม่มีเฉพาะ:


wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

ในขณะที่ Apache สามารถเจรจาใหม่การเชื่อมต่อ SSL ในภายหลังหลังจากเห็นชื่อโฮสต์ในคำขอ (และไม่ได้) แต่ก็สายเกินไปที่จะเลือกใบรับรองเซิร์ฟเวอร์ที่เหมาะสมที่จะใช้เพื่อจับคู่ชื่อโฮสต์คำขอในระหว่างการจับมือครั้งแรกส่งผลให้คำเตือน ชื่อโฮสต์ที่ไม่ถูกต้องในพวกเขา

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

บังเอิญมีความเป็นไปได้ที่จะมีโฮสต์เสมือนชื่อ SSL ที่มีความปลอดภัยหลายแห่งบนที่อยู่ IP เดียว - ฉันทำบนเว็บไซต์ของฉัน - แต่มันสร้างคำเตือนทุกประเภทในบันทึก Apache และคำเตือนใบรับรองในเบราว์เซอร์ แน่นอนว่าฉันจะไม่แนะนำที่นี่สำหรับสถานที่ผลิตที่ต้องดูสะอาด -David 31 ก.ค. เวลา 4:58 น

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

โฮสต์เสมือนเว็บไซต์ SSL หลายแห่งในที่อยู่ IP เดียว การโฮสต์หลายไซต์ที่เปิดใช้งาน SSL บนเซิร์ฟเวอร์เดียวโดยทั่วไปจะต้องมีที่อยู่ IP ที่ไม่ซ้ำกันต่อไซต์ แต่ใบรับรองที่มีชื่อสำรองของหัวเรื่องสามารถแก้ไขปัญหานี้ได้ Microsoft IIS 6 และ Apache ทั้งสองสามารถไซต์เสมือนโฮสต์ HTTPS โดยใช้ Unified Communications SSL หรือที่เรียกว่าใบรับรอง SAN


กรุณาช่วย.

คำตอบ:


13

ฉันทดสอบสิ่งนี้บนอินสแตนซ์ apache 2.2.14 ของฉันและทำงานได้ดี:

ใช้คำสั่ง NameVirtualHost (to ports.conf):

NameVirtualHost *:443

กำหนด vhost ของคุณ:

<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>

ฉันใช้ลิงค์นี้เป็นแหล่งข้อมูล


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