Rutinitas SSL: SSL23_WRITE: kegagalan jabat tangan ssl


32

Saya mencoba menggunakan OpenSSL untuk terhubung ke server SSL.

Ketika saya menjalankan:

openssl s_client -connect myhost.com:443

Konfigurasi klien SSL berikut berfungsi dengan baik:

  • 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)

Output dari koneksi yang berhasil terlihat seperti ini:

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)

Namun, ketika saya menggunakan klien dengan Ubuntu 12.04 saya (w / OpenSSL 1.0.1 14 Mar 2012) saya mendapatkan kesalahan:

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

Bagaimana saya bisa melanjutkan penyelesaian ini?

Semua tips sangat kami hargai!


Protokol dan cipher apa yang digunakan ketika terhubung dari Windows?
Shane Madden

Ia mengatakan: New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA. Saya berharap saya mengerti apa artinya semua ini! :)
Jaakko

DES? Itu sandi yang aneh untuk mendapat prioritas tertinggi. Server jenis apa yang Anda hubungkan?
Shane Madden

1
Mungkin default pada openssl baru secara default membatasi versi protokol ssl yang lebih lama? Akan ada beberapa alasan untuk melakukannya mengingat kekacauan BEAST baru-baru ini ...
rackandboneman

1
Duh, mengerti. Anda menguji klien terhadap situs Anda.
brent

Jawaban:


28

Ini tampaknya menjadi masalah yang diketahui dengan 1.0.1 OpenSSL Ubuntu: https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371

Itu tidak terlihat seperti perbaikan tersedia. Jika memungkinkan, Anda dapat menurunkan versi ke 1.0.0.

Mencoba openssl s_client -tls1 -connect myhost.com:443


Lebih detail masalah pada tiket Debian: bugs.debian.org/cgi-bin/bugreport.cgi?bug=665452
brent

PS Aku akan memberimu hadiah saat kedaluwarsa (19 jam)
Jaakko

1
Kedengarannya bagus :) Sepotong informasi terakhir, tiket hulu dengan OpenSSL yang tampaknya menjadi akar masalah: rt.openssl.org/Ticket/…
brent

Terima kasih! Jawaban ini juga berfungsi untuk OpenSSL 0.9.8zh 14 Jan 2016 di Mac
tytk

4

Kesalahan ini dapat disebabkan oleh versi openssl yang lebih lama ketika tidak dapat menegosiasikan ulang sandi (saya membuat sertifikat yang ditandatangani sendiri menggunakan kurva eliptik).

Secara khusus, saya mendapatkan kesalahan yang sama pada MacOS dengan openssl default - 0.9.8zh

Setelah menginstal versi pembuatan OpenSSL 1.0.2f kesalahan hilang:

~/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

setelah melakukan brew install, versi openssl saya di / usr / bin / openssl adalah versi lama. Saya harus secara khusus pergi ke /usr/local/Cellar/openssl/1.0.2o_2/bin untuk menjalankan versi openssl terbaru
Gopi Palamalai

2

Jika Anda mendapatkan masalah ini dengan server Java HTTPS berjalan di OpenJDK, cobalah mengedit /etc/java-7-openjdk/security/java.securitydan mengomentari barisnya

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

seperti yang ditemukan oleh Christoph W .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.