“ เซิร์ฟเวอร์ควรทราบ SSL แต่ไม่มีใบรับรองกำหนดค่า [คำแนะนำ: SSLCertificateFile]”


21

หลังจากอัพเกรด Apache2 ไปเป็นเวอร์ชั่น 2.2.31 เมื่อเร็ว ๆ นี้ฉันพบพฤติกรรมแปลก ๆ ในการตั้งค่า SSL VirtualHost

บางเว็บไซต์ที่ฉันโฮสต์กำลังแสดงใบรับรองสำหรับโฮสต์เริ่มต้นแม้ว่าลูกค้าจะรับServer Name Identificationรู้และสิ่งนี้เกิดขึ้นกับพวกเขาเพียงไม่กี่คน สิ่งนี้แสดงให้เห็นว่าเป็นคำเตือนหนังสือเดินทางของ Firefox / Chrome ทั่วไปเกี่ยวกับคุณที่อาจถูกหลอกลวงหากคุณกำลังค้นหาธนาคารบ้านของคุณ แต่นั่นไม่ใช่กรณี

เพื่อความชัดเจนหากเซิร์ฟเวอร์host.hostingdomain.orgมี SSL ของตัวเองพยายามเข้าถึงhttps://www.hostedsite.orgใบรับรองรายงานhost.hostingdomain.orgแต่มีเพียงไม่กี่คนที่https://www.hostedsite.meรายงานใบรับรองที่ถูกต้อง

ไซต์ทั้งหมดโฮสต์บนที่อยู่ IP เดียวกันบนพอร์ต 443 ความจริงก็คือ VirtualHosting ทำงานบนฝั่ง HTTP และเปลี่ยนเส้นทางไคลเอนต์ที่ทราบ SNI ไปยัง SSL โดยอัตโนมัติดังนั้นจึงเข้ากันได้กับไคลเอ็นต์ SNI ที่ไม่รู้จัก

การตรวจสอบบันทึกข้อผิดพลาดสำหรับการละเมิด VirtualHosts แสดงข้อความต่อไปนี้

[Tue Dec 25 16:02:45 2012] [error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/path/to/www.site.org.conf:20)

และอันที่จริง vhost นั้นได้รับการกำหนดค่าอย่างถูกต้องด้วย SSLCertificateFile

คำถามชัดเจน: จะแก้ไขได้อย่างไร?

คำตอบ:


38

มันเกิดขึ้นว่ามันอาจเป็นข้อผิดพลาดใน Apache รุ่นล่าสุด

โซลูชันที่ 1: ปรับลดรุ่นเป็นเสถียรภาพล่าสุด

โซลูชันที่ 2: แก้ไข listen.conf

แทนที่Listen *:443(หรือListen 443ตามการตั้งค่าของคุณ) ด้วยListen *:443 http

เครดิต


1
ขอบคุณสำหรับการชี้ให้เห็น! คุณช่วยฉันสงสัยมากมาย ... ฉันสงสัยว่าทำไมอะแพชีทำให้ชีวิตหนักขึ้น!
tftd

2
โซลูชันที่ 2: ควรเป็น httpd.conf ที่ไม่ฟัง Listen.conf
zzapper

1
หมายเหตุสิ่งนี้เกิดขึ้นกับฉันเมื่อเช้านี้ ... ฉันต้องการเพิ่ม "http" ลงใน Listen lin ใน /etc/httpd/conf.d/ssl.conf - โอ้ฉันไม่ต้องลดระดับ ...
สกอตต์

โซลูชันเป็นทางเลือกคุณไม่จำเป็นต้องปรับลดรุ่นหากเพิ่ม Listen.conf
usr-local-ΕΨΗΕΛΩΝ

10

ฉันมีปัญหาที่แน่นอนเหมือนกันและสิ่งที่ได้ผลสำหรับฉันนั้นเรียบง่ายอย่างไม่น่าเชื่อ

แก้ไข /etc/apache2/ports.conf (สำหรับ ubuntu หรือ httpd.conf)

เปลี่ยน "Listen 443" เป็น "Listen 443 http" ภายใต้ ssl_module


นี่เป็นคำตอบที่ยอมรับแล้ว
สเวน

2
คำตอบที่ยอมรับดูเหมือนว่าล้าสมัย คำตอบนี้มีประโยชน์และแม่นยำยิ่งขึ้น +1
Parag

คำตอบนี้ใช้ได้สำหรับ apache ใน apache2.4 lamp stack ของฉัน, Ubuntu คำตอบอื่น ๆ คือ "Listen.conf" - ควรเป็น ports.conf
Nick

2

อีกวิธีสำหรับการทำเช่นนี้คือเพื่อให้แน่ใจว่าทั้งหมดของคุณ: 443 vhosts รวมถึงการกำหนดค่า TLS

ปัญหานี้ได้รับเมื่อเร็ว ๆ นี้นำมาใช้ใน Debian ดังเสียงฮืด ๆและฉันได้แก้ปัญหาจากhttp://blog.noizeramp.com/2010/10/03/apache-2-and-ssl-configuration/


นี่เป็นปัญหาของฉัน ฉันทำซ้ำ vhost ในของฉันhttpd.confแต่ไม่สามารถรวมบรรทัดที่ระบุการกำหนดค่า TLS ได้ การเพิ่มการตั้งค่า TLS ต่างๆกลับเข้ามาใน (SSLEngine, SSLCipherSuite, SSLCertificateFile และ SSLCertificateKeyFile) แก้ไขปัญหา
rinogo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.