ข้อผิดพลาดในการตั้งค่าเซิร์ฟเวอร์ stunnel: `SSL3_GET_CLIENT_HELLO: หมายเลขรุ่นผิด '


9

ฉันตั้งค่าstunnelเซิร์ฟเวอร์ใน Windows XP และฉันได้รับข้อผิดพลาดนี้เมื่อลูกค้าพยายามเข้าถึง:

2013.02.14 00:02:16 LOG7[8848:7664]: Service [https] accepted (FD=320) from 107.20.36.147:56160
2013.02.14 00:02:16 LOG7[8848:7664]: Creating a new thread
2013.02.14 00:02:16 LOG7[8848:7664]: New thread created
2013.02.14 00:02:16 LOG7[8848:9792]: Service [https] started
2013.02.14 00:02:16 LOG5[8848:9792]: Service [https] accepted connection from 107.20.36.147:56160
2013.02.14 00:02:16 LOG7[8848:9792]: SSL state (accept): before/accept initialization
2013.02.14 00:02:16 LOG7[8848:9792]: SSL alert (write): fatal: handshake failure
2013.02.14 00:02:16 LOG3[8848:9792]: SSL_accept: 1408A10B: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
2013.02.14 00:02:16 LOG5[8848:9792]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2013.02.14 00:02:16 LOG7[8848:9792]: Local socket (FD=320) closed
2013.02.14 00:02:16 LOG7[8848:9792]: Service [https] finished (0 left)

มีความคิดว่าจะทำอย่างไรกับเรื่องนี้? ฉันอ่านออนไลน์ว่านี่อาจหมายความว่าเซิร์ฟเวอร์ของฉันกำลังโฆษณาที่สามารถสื่อสารใน SSL3 ได้ แต่อันที่จริงแล้วมันไม่สามารถทำได้ หากเป็นจริงฉันต้องการทราบวิธีแก้ไขปัญหานี้ ฉันกำลังแก้ไขstunnel.confไฟล์ แต่ฉันไม่ทราบว่าจะแก้ไขอย่างไรเพื่อแก้ไขปัญหานี้

UPDATE:

ข้อความแสดงข้อผิดพลาดด้านบนแสดงเฉพาะเมื่อไคลเอนต์ Twilio (เช่นเซิร์ฟเวอร์ของ Twilio) พยายามเข้าถึงเซิร์ฟเวอร์ของฉัน เมื่อฉันพยายามเข้าถึงเซิร์ฟเวอร์ด้วยคอมพิวเตอร์เครื่องใดเครื่องหนึ่งหน้าเว็บจะแสดงขึ้นมา แต่หลังจากที่เนื้อหาปรากฏขึ้น Chrome จะแสดงหน้าเว็บเป็น "กำลังโหลด" เป็นเวลาประมาณ 30 วินาทีในตอนท้ายของstunnelข้อความนี้:

transfer: s_poll_wait: TIMEOUTclose exceeded: closing

UPDATE:

นี่คือการจับภาพ wireshark: https://gist.github.com/cool-RR/4963477

ไฟล์ Cap: https://dl.dropbox.com/u/1927707/wireshark.cap

โปรดทราบว่าเซิร์ฟเวอร์ทำงานบนพอร์ต 8088

UPDATE:

นี่คือบันทึกจากเซิร์ฟเวอร์ (พร้อม debug = 7):

2013.02.17 17:06:52 LOG7[7636:2092]: No limit detected for the number of clients
2013.02.17 17:06:52 LOG5[7636:2092]: stunnel 4.54 on x86-pc-msvc-1500 platform
2013.02.17 17:06:52 LOG5[7636:2092]: Compiled/running with OpenSSL 1.0.1c-fips 10 May 2012
2013.02.17 17:06:52 LOG5[7636:2092]: Threading:WIN32 SSL:+ENGINE+OCSP+FIPS Auth:none Sockets:SELECT+IPv6
2013.02.17 17:06:52 LOG5[7636:2092]: Reading configuration from file stunnel.conf
2013.02.17 17:06:52 LOG5[7636:2092]: FIPS mode is enabled
2013.02.17 17:06:52 LOG7[7636:2092]: Compression not enabled
2013.02.17 17:06:52 LOG7[7636:2092]: Snagged 64 random bytes from C:\Documents and Settings\User/.rnd
2013.02.17 17:06:52 LOG7[7636:2092]: Wrote 1024 new random bytes to C:\Documents and Settings\User/.rnd
2013.02.17 17:06:52 LOG7[7636:2092]: PRNG seeded successfully
2013.02.17 17:06:52 LOG6[7636:2092]: Initializing service [https]
2013.02.17 17:06:52 LOG7[7636:2092]: Certificate: G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Certificate loaded
2013.02.17 17:06:52 LOG7[7636:2092]: Key file: G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Private key loaded
2013.02.17 17:06:52 LOG7[7636:2092]: Could not load DH parameters from G:\Dropbox\StartSSL\SSL Cert.pem
2013.02.17 17:06:52 LOG7[7636:2092]: Using hardcoded DH parameters
2013.02.17 17:06:52 LOG7[7636:2092]: DH initialized with 2048-bit key
2013.02.17 17:06:52 LOG7[7636:2092]: ECDH initialized with curve prime256v1
2013.02.17 17:06:52 LOG7[7636:2092]: SSL options set: 0x03000004
2013.02.17 17:06:52 LOG5[7636:2092]: Configuration successful
2013.02.17 17:06:52 LOG7[7636:2092]: Service [https] (FD=268) bound to 0.0.0.0:8088
2013.02.17 17:07:08 LOG7[7636:2092]: Service [https] accepted (FD=320) from 54.242.25.199:45922
2013.02.17 17:07:08 LOG7[7636:2092]: Creating a new thread
2013.02.17 17:07:08 LOG7[7636:2092]: New thread created
2013.02.17 17:07:08 LOG7[7636:8004]: Service [https] started
2013.02.17 17:07:08 LOG5[7636:8004]: Service [https] accepted connection from 54.242.25.199:45922
2013.02.17 17:07:08 LOG7[7636:8004]: SSL state (accept): before/accept initialization
2013.02.17 17:07:08 LOG7[7636:8004]: SSL alert (write): fatal: handshake failure
2013.02.17 17:07:08 LOG3[7636:8004]: SSL_accept: 1408A10B: error:1408A10B:SSL routines:SSL3_GET_CLIENT_HELLO:wrong version number
2013.02.17 17:07:08 LOG5[7636:8004]: Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
2013.02.17 17:07:08 LOG7[7636:8004]: Local socket (FD=320) closed
2013.02.17 17:07:08 LOG7[7636:8004]: Service [https] finished (0 left)

UPDATE:

นี่คือstunnel.confไฟล์ของฉัน


ดูเหมือนไฟล์ดรอปบ็อกซ์จะหายไป เซิร์ฟเวอร์ส่งคืน HTTP / 404
Mircea Vutcovici

@MirceaVutcovici ขออภัยแก้ไขแล้ว
Ram Rachum

ฉันเพิ่มค่าหัวของคำถามเป็น 100 คะแนน
Ram Rachum

1
คุณช่วยรวมไฟล์ stunnel.conf ด้วยได้ไหม? เนื่องจากดูเหมือนว่าเซิร์ฟเวอร์ของคุณกำลังปฏิเสธการเชื่อมต่อ SSLv3.0
Stephane

รวมไว้ในขณะนี้
Ram Rachum

คำตอบ:


3

คุณควรทำการดักจับเครือข่ายและดูสาเหตุที่ถูกปฏิเสธ ตรวจสอบล็อกบนจุดสิ้นสุดทั้งสองด้วย เพิ่มdebugระดับในการ stunnel conf

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

ไคลเอนต์ส่งข้อความ ClientHello ระบุรุ่นโปรโตคอล TLS สูงสุดที่รองรับหมายเลขสุ่มรายการของ CipherSuites ที่แนะนำและวิธีการบีบอัดที่แนะนำ

แหล่ง

โปรดทราบว่าโปรโตคอล SSL มีการเปลี่ยนแปลงเมื่อสองสามปีก่อนเนื่องจากข้อผิดพลาดด้านความปลอดภัยในการเจรจาใหม่ ดูCVE-2009-3555และหน้านี้เกี่ยวกับ SSL Renegotiation

เซิร์ฟเวอร์กำลังตอบสนองด้วย:

Secure Sockets Layer
    SSLv3 Record Layer: Alert (Level: Fatal, Description: Handshake Failure)
        Content Type: Alert (21)
        Version: SSL 3.0 (0x0300)
        Length: 2
        Alert Message
            Level: Fatal (2)
            Description: Handshake Failure (40)

คุณต้องตรวจสอบบันทึกในเซิร์ฟเวอร์ SSL เพื่อดูสาเหตุที่ปฏิเสธการเชื่อมต่อ พยายามที่จะเปิดใช้งาน SSL แก้จุดบกพร่องบน stunnel debug=7ด้วย:

stunnelเซิร์ฟเวอร์มีoptions = NO_SSLv3แต่ลูกค้าจะพยายามที่จะเชื่อมต่อโดยใช้ SSLv3 คุณต้องอัปเกรดไคลเอ็นต์เพื่อรองรับ SSL รุ่นใหม่กว่าหรือคุณต้องเปลี่ยนการstunnelกำหนดค่าเพื่อยอมรับ SSLv3


ฉันได้อัปเดตคำถามพร้อมรายละเอียดเพิ่มเติมแล้ว คุณยังต้องการให้ฉันจับภาพเครือข่ายหรือไม่?
Ram Rachum

ใช่เพื่อทราบเวอร์ชั่นที่รองรับโดยไคลเอนต์ SSL
Mircea Vutcovici

ฉันได้ทำการจับภาพ Wireshark และเชื่อมโยงกับมันในคำถาม
Ram Rachum

1
ตกลงปัญหาคือคุณเปิดใช้งานโหมด FIPS (โดยค่าเริ่มต้นจะเปิดใช้งานใน stunnel ที่คอมไพล์ด้วย FIPS) และลูกค้าพยายามเชื่อมต่อโดยใช้ SSLv3 (ฉันถือว่าคุณต้องยืนยันจากบันทึกหรือเครือข่าย) แต่ FIPS ใช้งานได้กับ TLSv1 หรือใหม่กว่าเท่านั้น
Mircea Vutcovici

1
คุณมี 2 วิธีแก้ไข: 1. อัปเกรดไคลเอ็นต์ SSL (Twilio) 2. ปิดใช้งานการปฏิบัติตามมาตรฐาน FIPS และลดความปลอดภัยโดยการเพิ่มfips = nostunnel.conf
Mircea Vutcovici

0

อาจเป็นเวอร์ชัน SSL ที่ไม่ตรงกันระหว่างไคลเอนต์และเซิร์ฟเวอร์ ตรวจสอบให้แน่ใจว่าไคลเอนต์ได้รับการกำหนดค่าสำหรับ SSL3 เท่านั้นโดยปิดใช้งานเวอร์ชัน SSL ที่เก่ากว่าบนไคลเอ็นต์


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