ปิดใช้งาน SSLv3 แต่ยังรองรับ SSLv2Hello ใน Apache


12

ไคลเอ็นต์ SSL จำนวนมากโดยเฉพาะอย่างยิ่ง JDK 6 ใช้โปรโตคอล SSLv2Hello เพื่อจับมือกับเซิร์ฟเวอร์ การใช้โปรโตคอลนี้ไม่ได้หมายความว่าคุณกำลังใช้ SSL 2.0 หรือ 3.0 สำหรับเรื่องนั้น มันเป็นเพียงการจับมือกันเพื่อพิจารณาว่าจะใช้โปรโตคอลใด [ http://tools.ietf.org/html/rfc5246#appendix-E.2]

อย่างไรก็ตามใน Apache หากคุณปิดใช้งานการสนับสนุน SSLv3 สิ่งนี้จะลบการสนับสนุนสำหรับโปรโตคอล SSLv2Hello อย่างชัดเจน Apache Tomcat สนับสนุน SSLv2Hello อย่างชัดเจน นั่นคือคุณสามารถเปิดใช้งานได้ แต่ไม่เปิดใช้งาน SSLv3

มีวิธีการทำเช่นนี้ใน Apache หรือไม่?

[Update]

นี่คือการกำหนดค่าโปรโตคอลของฉัน:

  SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv3

However, in Apache, if you disable SSLv3 support, this apparently removes support for the SSLv2Hello protocol. ฉันใช้ Apache 2.2 ด้วยSSLProtocol all -SSLv2 -SSLv3และ SSL 2 handshake ทำงานได้ การกำหนดค่าใดที่คุณกำลังทำงานอย่างแน่นอนว่าคุณกำลังมีปัญหา วิธีเดียวที่ฉันรู้ที่จะปิดการใช้งาน SSL 2 Handshake คือการเปิดใช้งานโหมด FIPS
Chris S

1
เป็นความเจ็บปวดที่จะจัดการกับการสนับสนุนแบบดั้งเดิมในปี 2557 :( ถึงเวลาแล้วที่ทุกคนจะต้องใช้ SSLv2 และ SSLv3 และสนับสนุนส่วนขยายสากล (เช่น SNI)
Xavier Lucas

2
@XavierLucas แทนการทำทั้งหมด -SSLv2, -SSLv3 ฉันระบุโปรโตคอล TLS ที่ฉันรองรับ ฉันไม่เห็นสาเหตุที่จะแตกต่างกัน แต่ฉันจะทดสอบ
Matt Hughes

@ChrisS ฉันลองทั้งสอง: SSLProtocol + TLSv1 + TLSv1.1 + TLSv1.2 -SSLv3 และ -SSLv3 -SSLv2 ทั้งหมด สิ่งนี้ทำงานด้วย Apache 2.4.10 ไม่มีการกำหนดค่าปรากฏขึ้นเพื่ออนุญาตการจับมือ SSL 2 และฉันยังไม่ได้แตะโหมด FIPS; ค่าเริ่มต้นคือมันถูกปิดการใช้งาน
Matt Hughes

คำตอบ:


7

เห็นได้ชัดว่า mod_ssl มีการเปลี่ยนแปลงในปีที่แล้ว (ฉันไม่พบข้อผูกพันที่แน่นอนกับแหล่งที่มา แต่พบ "ปัญหา") แหล่งที่มาทำสิ่งนี้:

If SSLProtocol only includes only one Protocol:
    Handshake = That Protocol's Handshake Only
Else
    Handshake = SSLv2 Handshake

ไม่มีการแทนที่สำหรับการตั้งค่านี้ สิ่งเดียวที่คุณทำได้คือแก้ไขซอร์สคอมไพล์เวอร์ชันของคุณเองอีกครั้ง ฉันได้สร้างdiffเพื่อบังคับใช้ SSLv2 Handshake ถ้าคุณต้องการคอมไพล์ของคุณเอง


1
ฉันสามารถยืนยันได้ว่าโปรแกรมแก้ไขของ Chris ช่วยได้ - curl (และโปรแกรม libcurl ที่ใช้เช่น git) สามารถพูดคุยกับเซิร์ฟเวอร์ของเราได้อีกครั้งแม้ว่า SSLv3 จะถูกปิดการใช้งานโดยไม่sslscanทำเครื่องหมายช่องโหว่ใด ๆ แต่แพทช์ดูเหมือนจะค่อนข้างรุกรานและฉันอยากจะขอให้คริสส่งไปยังโครงการ Apache เพื่อรับการตรวจสอบโดยเร็ว ฉันจะยื่นตั๋วเองถ้า Chris ไม่ :-) ขอบคุณมาก Chris!
มิคาอิลต.

1
เป็นความคิดที่ดีที่จะเพิ่มคำสั่งแยกต่างหากเพื่อบังคับใช้โหมดความเข้ากันได้ ถ้าฉันมีเวลาว่างฉันจะเขียนมัน แต่ฉันไม่คิดว่า "การปะแก้" นี้เป็นความคิดที่ดีในระยะยาว
Chris S

ใช่นั่นเป็นสิ่งที่นักพัฒนา Apache กำลังพิจารณาอยู่ ดู [thread] [1] ฉันเริ่มที่นั่น ... [1] mail-archives.apache.org/mod_mbox/httpd-dev/201410.mbox/ …
Mikhail T.

1

ดังนั้นจึงปรากฎว่านี่ไม่ใช่ปัญหาตลอด Apache จะยอมรับ SSLv2 handshake ด้วยการกำหนดค่าอย่างใดอย่างหนึ่งที่ฉันโพสต์ไว้ด้านบน ฉันถูกเข้าใจผิดโดยความผิดพลาดของการจับมือในการคิดว่านี่เป็นปัญหา มันเป็นเพียงปัญหาการกำหนดค่าที่เซิร์ฟเวอร์ไม่เชื่อถือ CA ของลูกค้า

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