รูทีน SSL: SSL23_WRITE: ssl handshake ล้มเหลว


32

ฉันพยายามใช้ OpenSSL เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ SSL

เมื่อฉันวิ่ง:

openssl s_client -connect myhost.com:443

การกำหนดค่าไคลเอนต์ SSL ต่อไปนี้ใช้ได้ผล:

  • Windows ( OpenSSL 0.9.83e 23 Feb 2007)
  • Linux ( OpenSSL 0.9.8o 01 Jun 2010)
  • Linux ( OpenSSL 1.0.0-fips 29 Mar 2010)

เอาต์พุตจากการเชื่อมต่อที่ประสบความสำเร็จจะมีลักษณะเช่นนี้:

New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DES-CBC3-SHA
    Session-ID: (hidden)
    Session-ID-ctx:
    Master-Key: (hidden)
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1337266099
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

อย่างไรก็ตามเมื่อฉันใช้ไคลเอนต์กับ Ubuntu 12.04 (w / OpenSSL 1.0.1 14 Mar 2012) ฉันได้รับข้อผิดพลาด:

CONNECTED(00000003)
...:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:

ฉันจะแก้ปัญหานี้ต่อได้อย่างไร?

เคล็ดลับทั้งหมดชื่นชมมาก!


โพรโทคอลและรหัสลับใดที่ใช้เมื่อเชื่อมต่อจาก Windows
เชนแมดเดน

มันบอกว่า: New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA. ฉันหวังว่าฉันเข้าใจความหมายทั้งหมดนี้! :)
Jaakko

DES? นั่นเป็นรหัสลับที่มีลำดับความสำคัญสูงสุด คุณกำลังเชื่อมต่อเซิร์ฟเวอร์ประเภทใด
เชนแมดเดน

1
บางทีค่าเริ่มต้นของ openssl ที่ใหม่กว่านั้นอาจเป็นเพราะการ จำกัด รุ่นเก่าของ ssl protocol จะมีเหตุผลบางอย่างที่จะไม่ได้รับดังนั้น BEAST ระเบียบที่ผ่านมา ...
rackandboneman

1
เข้าใจดี คุณกำลังทดสอบลูกค้ากับเว็บไซต์ของคุณ
รนต์

คำตอบ:


28

สิ่งนี้ดูเหมือนจะเป็นปัญหาที่ทราบกันแล้วกับ Ubuntu OpenSSL 1.0.1: https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371

ดูเหมือนว่าจะไม่สามารถแก้ไขได้ ถ้าเป็นไปได้คุณสามารถปรับลดรุ่นเป็น 1.0.0

ลอง openssl s_client -tls1 -connect myhost.com:443


รายละเอียดเพิ่มเติมของปัญหาเกี่ยวกับตั๋ว Debian: bugs.debian.org/cgi-bin/bugreport.cgi?bug=665452
รนต์

ป.ล. ฉันจะให้รางวัลแก่คุณเมื่อหมดอายุ (19 ชั่วโมง)
Jaakko

1
ฟังดูดี :) ข้อมูลสุดท้าย, ตั๋ว upstream พร้อม OpenSSL ที่น่าจะเป็นต้นเหตุของปัญหา: rt.openssl.org/Ticket/…
brent

ขอบคุณ! คำตอบนี้ใช้ได้กับ OpenSSL 0.9.8zh 14 มกราคม 2559 บน Mac
tytk

4

ข้อผิดพลาดนี้อาจเกิดจาก openssl รุ่นเก่ากว่าเมื่อไม่สามารถต่อรองรหัสได้ (ฉันสร้างใบรับรองที่ลงนามด้วยตนเองโดยใช้เส้นโค้งรูปไข่)

โดยเฉพาะฉันได้รับข้อผิดพลาดเดียวกันใน MacOS กับ openssl เริ่มต้น - 0.9.8zh

หลังจากติดตั้งรุ่นชง OpenSSL 1.0.2f ข้อผิดพลาดก็หายไป:

~/bin/openssl s_client -connect localhost:45678 | grep Cipher

verify return:1
New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES256-GCM-SHA384
    Cipher    : ECDHE-ECDSA-AES256-GCM-SHA384

หลังจากทำการติดตั้งชงเวอร์ชัน openssl ของฉันใน / usr / bin / openssl เป็นเวอร์ชันเก่า ฉันต้องไปที่ /usr/local/Cellar/openssl/1.0.2o_2/bin เพื่อเรียกใช้ openssl รุ่นล่าสุดโดยเฉพาะ
Gopi Palamalai

2

หากคุณพบปัญหานี้กับเซิร์ฟเวอร์ Java HTTPS ที่ทำงานบน OpenJDK ให้ลองแก้ไข/etc/java-7-openjdk/security/java.securityและแสดงความคิดเห็นในบรรทัด

security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg

เป็นค้นพบโดยคริสโต W

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