Hello!

The patch http://cvs.openssl.org/chngview?cn=22565
 does not fix the following error messages at write and session re-negotiation, 
for TLS_v1_1_client_method:

OpenSSL error 1: error:00000001:lib(0):func(0):reason(1)
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number


My simplified use case for a O_NONBLOCK fd (based on Kannel gwlib code):

ssl_context = SSL_CTX_new(TLSv1_1_client_method());
    SSL_CTX_set_mode(ssl_context, 
        SSL_MODE_ENABLE_PARTIAL_WRITE | SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
...
SSL *ssl = SSL_new(ssl_context);
...
ERR_clear_error();
if (SSL_set_fd(ssl, fd) == 0) { ... }

flags = fcntl(fd, F_GETFL);
newflags = flags | O_NONBLOCK;
fcntl(fd, F_SETFL, newflags);

BIO_set_nbio(SSL_get_rbio(ssl), 1);
BIO_set_nbio(SSL_get_wbio(ssl), 1);
SSL_set_connect_state(ssl);


The following applies to latest release openssl-1.0.1i.


I think my server (a proprietary server) always negotiates the connection down 
to TLSv1 (and also supports SSLv3). This is the alert message from Wireshark 
after certificate exchange using TLSv1_1_client_method:
TLSv1 Record Layer: Alert (Level: Fatal, Description: Protocol Version)
Content Type: Alert (21)
Version: TLS 1.0 (0x0301)
Length: 2
Alert Message
Level: Fatal (2)
Description: Protocol Version (70)

The reason why I started using specifically TLSv1/TLSv1.1 is because this bug 
(known in 1.0.1h) occurs when negotiating with my server, using default 
SSLv23_client_method:
error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
More info here: 
http://serverfault.com/questions/389197/ssl-routinesssl23-writessl-handshake-failure


Results:
Library error messages every time data is sent again into channel, but a 
working connection for TLSv1_1_client_method.
There are no errors for TLS_v1_client_method or SSLv3_client_method. The 
connection fails to negotiate (gets stuck) with the bug mentioned above using 
SSLv23_client_method(), even with SSL_OP_NO_SSLv2 option. Connection negotiates 
into SSLv3 and works without library errors using SSLv23_client_method() with 
SSL_OP_NO_SSLv2 | SSL_OP_NO_TLSv1.

Please review and fix.


ps: if you are a Kannel dev, try this quick demo:

Connection *con;
con = conn_open_ssl_nb(server_addr, server_port, NULL, NULL);
SSL_clear(conn_get_ssl(pc->con));
SSL_set_ssl_method(conn_get_ssl(con), TLSv1_1_client_method());

-- реклама -----------------------------------------------------------
Крутые телефоны! Низкие цены! Покупай тут!
http://aukro.ua/?utm_source=i.ua&utm_medium=advert
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to