openssl 1.1.1e 14095126:SSL routines:ssl3_read_n

Maxim Dounin mdounin at mdounin.ru
Mon Mar 23 12:34:51 UTC 2020


Hello!

On Mon, Mar 23, 2020 at 02:04:36PM +0300, Sergey Kandaurov wrote:

> 
> > On 22 Mar 2020, at 21:39, itpp2012 <nginx-forum at forum.nginx.org> wrote:
> > 
> > How about this as this catches all 3 while conditions:
> > 
> > +++ src/event/ngx_event_openssl.c
> > @@ -2318,
> > 
> >    c->ssl->no_wait_shutdown = 1;
> >    c->ssl->no_send_shutdown = 1;
> > 
> >    if (sslerr == SSL_ERROR_ZERO_RETURN || ERR_peek_error() == 0) {
> >        ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0,
> >                       "peer shutdown SSL cleanly");
> >        return NGX_DONE;
> >    }
> > 
> > +    /* https://forum.nginx.org/read.php?2,287377  */
> > +    /* https://github.com/openssl/openssl/issues/11381  */
> > +#ifdef SSL_R_UNEXPECTED_EOF_WHILE_READING
> > +    if (sslerr == SSL_ERROR_SSL && ERR_GET_REASON(ERR_peek_error())
> > +                   == SSL_R_UNEXPECTED_EOF_WHILE_READING) {
> > +        ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0,
> > +                       "ssl3_read_n:unexpected eof while reading");
> > +        return NGX_DONE;
> > +    }
> > +#endif
> > +
> >    ngx_ssl_connection_error(c, sslerr, err, "SSL_read() failed");
> 
> How would this catch the reported error in SSL_do_handshake() ?
> I'd replicate this check in ngx_ssl_handshake().
> And probably for SSL_read_early_data, SSL_shutdown, SSL_peak,
> (ok, we don't use SSL_peak), but this is a moot point.

Given the session resumption issue[1], I tend to think the best 
solution for now is to recommend to avoid using OpenSSL 1.1.1e.

[1] https://github.com/openssl/openssl/issues/11378

-- 
Maxim Dounin
http://mdounin.ru/


More information about the nginx mailing list