ฉันคิดว่าคุณสามารถทำได้ แต่ไม่ใช่วิธีที่คุณพยายามทำ
ใบรับรอง SSL เป็นคำสั่งที่เชื่อมโยงคีย์การเข้ารหัสสาธารณะกับโครงสร้าง X.500 ซึ่งรวมถึงองค์ประกอบ CN หรือชื่อสามัญ ใบรับรองที่ลงนามนั้นเป็นสิ่งที่ผู้ใช้รับรองบุคคลที่สามได้รับการรับรองการผูกมัดโดยใช้กุญแจสาธารณะที่ผู้ใช้ปลายทางรู้จักแล้ว (สแต็กของใบรับรองผู้ออกใบรับรอง (CA) ที่อาศัยอยู่ในเบราว์เซอร์ของคุณ)
เมื่อคุณเยี่ยมชมเว็บไซต์ที่มีการรักษาความปลอดภัย SSL ด้วยเบราว์เซอร์ CN ที่เซ็นชื่อจะถูกรู้จักในเบราว์เซอร์ สิ่งที่เบราว์เซอร์เลือกใช้จะขึ้นอยู่กับเบราว์เซอร์ เบราว์เซอร์ที่ฉันทราบจะเปรียบเทียบกับชื่อโฮสต์ที่ขอและข้อผิดพลาดหากแตกต่างกัน (หรือหากการเชื่อมโยงที่ได้รับการรับรองนั้นไม่สามารถทำการวิเคราะห์ได้เช่นใบรับรองการเซ็นชื่อไม่รู้จักกับเบราว์เซอร์ ล้าสมัย แต่นั่นเป็นปัญหาที่ต่างออกไป) ตามหลักการแล้วไม่มีอะไรขัดขวางคุณจากการได้รับใบรับรองที่ลงนามต่อสาธารณชนโดยที่ CN คือที่อยู่ IP ไม่ใช่ FQDN (ชื่อโดเมนที่ผ่านการรับรอง) [1] แต่นั่นจะไม่ทำให้เบราว์เซอร์เปรียบเทียบ CN กับ IP อย่างน่าอัศจรรย์ ที่อยู่แทนด้วยชื่อโฮสต์ที่ร้องขอ
ฉันสงสัยว่าวิธีที่ง่ายที่สุดในการแก้ปัญหาของคุณคือการเริ่มต้น CA ของคุณเองซึ่งเป็นเรื่องง่ายที่จะทำและมีบทเรียนสาธารณะมากมายเกี่ยวกับ หนึ่งคือที่นี่ เมื่อผู้ใช้ปลายทางของคุณนำเข้า CA ของคุณไปยังเบราว์เซอร์ใบรับรองทั้งหมดที่คุณทำจะได้รับการยอมรับว่ามีสิทธิ์
จากนั้นคุณอาจมีปัญหาที่สองที่คุณต้องการเรียกใช้เว็บไซต์ NameVirtualHost จำนวนมากบนที่อยู่ IP เดียว สิ่งนี้เคยเป็นอดีตที่ผ่านมาไม่ได้เนื่องจากการเจรจา SSL (ต่างจาก TLS) เกิดขึ้นก่อนสิ่งอื่นใดในการเชื่อมต่อ กล่าวคือ CN ที่ฝังตัวอยู่ในใบรับรองของคุณเป็นที่รู้จักและใช้โดยลูกค้าก่อนที่ลูกค้าจะสามารถพูดได้ว่าโฮสต์ใดที่พวกเขากำลังพยายามเชื่อมต่อ
เมื่อเร็ว ๆ นี้มีการแนะนำส่วนขยายโปรโตคอลที่ชื่อ SNI (บ่งชี้ชื่อเซิร์ฟเวอร์) ซึ่งช่วยให้ไคลเอนต์และเซิร์ฟเวอร์ระบุว่าพวกเขาต้องการทำสิ่งที่ชื่อโฮสต์ก่อนที่จะนำเสนอใบรับรอง SSL ทำให้ถูกต้องหนึ่งชุด ของใบรับรองที่จะได้รับจากเซิร์ฟเวอร์ เห็นได้ชัดว่าสิ่งนี้ต้องการ apache 2.2.10 เวอร์ชันล่าสุดของ OpenSSL ที่เพียงพอและการสนับสนุนฝั่งไคลเอ็นต์(ที่สำคัญ )
ดังนั้นถ้าฉันต้องทำสิ่งที่คุณพยายามจะทำฉันจะดูการทำใบรับรอง CA ของตัวเองบอกผู้ใช้ของฉันว่าพวกเขาต้องใช้เบราว์เซอร์ที่สนับสนุน SNI และนำเข้าใบรับรอง CA หลักของฉันและตัดและ การลงนามใบรับรอง SSL ของฉันเองสำหรับแต่ละเว็บไซต์ Bugtrack
[1] โอเคคุณอาจไม่พบใครที่จะทำ แต่นั่นคือรายละเอียดการใช้งาน สิ่งที่ฉันพยายามแสดงที่นี่คือแม้ว่าคุณทำมันจะไม่แก้ปัญหาของคุณ