Bug yang mengatur server stunnel: `SSL3_GET_CLIENT_HELLO: nomor versi salah`

9

Saya menyiapkan stunnelserver pada Windows XP, dan saya mendapatkan bug ini ketika klien mencoba mengakses:

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)

Adakah yang harus dilakukan tentang hal ini? Saya membaca online bahwa ini mungkin berarti server saya beriklan yang dapat berkomunikasi dalam SSL3 tetapi sebenarnya tidak bisa. Jika ini benar, saya ingin tahu bagaimana saya bisa memperbaikinya. Saya mengedit stunnel.conffile tetapi saya tidak tahu apa yang harus diubah untuk memperbaikinya.

MEMPERBARUI:

Pesan kesalahan di atas hanya muncul ketika klien Twilio (yaitu server Twilio) mencoba mengakses server saya. Ketika saya mencoba mengakses server saya dengan salah satu komputer saya, halaman tersebut muncul, tetapi setelah konten muncul, Chrome menampilkan halaman sebagai "memuat" selama sekitar 30 detik, di ujung yang stunnelmemberikan pesan ini:

transfer: s_poll_wait: TIMEOUTclose exceeded: closing

MEMPERBARUI:

Ini adalah tangkapan wireshark: https://gist.github.com/cool-RR/4963477

Tutup file: https://dl.dropbox.com/u/1927707/wireshark.cap

Perhatikan bahwa server berjalan pada port 8088.

MEMPERBARUI:

Berikut ini adalah log dari server (dengan 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)

MEMPERBARUI:

Ini stunnel.conffile saya .

Ram Rachum
sumber
File dropbox sepertinya tidak ada. Server mengembalikan HTTP / 404
Mircea Vutcovici
@MirceaVutcovici Maaf, diperbaiki sekarang.
Ram Rachum
Saya meningkatkan karunia pada pertanyaan menjadi 100 poin.
Ram Rachum
1
Bisakah Anda memasukkan file stunnel.conf juga? Karena sepertinya server Anda menolak koneksi SSLv3.0
Stephane
Termasuk sekarang
Ram Rachum

Jawaban:

3

Anda harus membuat tangkapan jaringan dan melihat mengapa itu ditolak. Periksa juga log pada kedua titik akhir. Tingkatkan debuglevel di stunnel conf.

Anda perlu membuat jejak jaringan untuk mengetahui versi protokol SSL mana yang didukung klien. Kemudian pastikan server Anda mendukung versi itu juga.

Seorang klien mengirim pesan ClientHello menentukan versi protokol TLS tertinggi yang didukungnya, nomor acak, daftar CipherSuites yang disarankan dan metode kompresi yang disarankan.

Sumber

Harap perhatikan bahwa protokol SSL diubah beberapa tahun yang lalu karena bug keamanan dalam negosiasi ulang. Lihat CVE-2009-3555 dan halaman ini tentang Renegosiasi SSL

Server merespons dengan:

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)

Anda harus memeriksa log pada server SSL untuk mengetahui mengapa ia menolak koneksi. Mencoba untuk mengaktifkan SSL debugging pada stunnel dengan: debug=7.

The stunnelserver memiliki options = NO_SSLv3, tetapi klien mencoba untuk terhubung menggunakan SSLv3. Anda perlu memutakhirkan klien untuk mendukung versi SSL yang lebih baru atau Anda perlu mengubah stunnelkonfigurasi untuk menerima SSLv3.

Mircea Vutcovici
sumber
Saya telah memperbarui pertanyaan dengan lebih detail. Apakah Anda masih membutuhkan saya untuk melakukan penangkapan jaringan?
Ram Rachum
Ya, untuk mengetahui versi mana yang didukung oleh klien SSL.
Mircea Vutcovici
Saya telah melakukan penangkapan Wireshark dan menautkannya dalam pertanyaan.
Ram Rachum
1
Oke, masalahnya adalah Anda mengaktifkan mode FIPS (diaktifkan secara default di stunnel yang dikompilasi dengan FIPS) dan bahwa klien mencoba tersambung menggunakan SSLv3 (saya berasumsi, Anda harus mengonfirmasi dari log atau tangkapan jaringan). Tetapi FIPS hanya bekerja dengan TLSv1 atau yang lebih baru.
Mircea Vutcovici
1
Anda memiliki 2 solusi: 1. meningkatkan klien SSL (Twilio). 2. nonaktifkan kepatuhan FIPS, dan turunkan keamanan, dengan menambah fips = nostunnel.conf
Mircea Vutcovici
0

Ini bisa menjadi ketidakcocokan versi SSL antara klien dan server. Pastikan klien dikonfigurasi hanya untuk SSL3, dengan menonaktifkan versi SSL yang lebih lama pada klien.

Daniel t.
sumber
Saya tidak tahu bagaimana melakukannya.
Ram Rachum