[wp-trac] [WordPress Trac] #26010: SSL via `WP_Http_Curl` breaks on HTTP version mismatch

WordPress Trac noreply at wordpress.org
Fri Nov 15 08:02:12 UTC 2013


#26010: SSL via `WP_Http_Curl` breaks on HTTP version mismatch
--------------------------+------------------------------
 Reporter:  soulseekah    |       Owner:
     Type:  defect (bug)  |      Status:  new
 Priority:  normal        |   Milestone:  Awaiting Review
Component:  HTTP          |     Version:  3.7
 Severity:  minor         |  Resolution:
 Keywords:                |
--------------------------+------------------------------

Comment (by soulseekah):

 Replying to [comment:5 dd32]:
 > The problem is, that many servers out there do not respect the 6/7th
 set, and as a result, OpenSSL clients will generally not call a Shutdown-
 not-completed error as a critical error, and will continue to return the
 data.
 > In cURL 7.31.0 that was changed, and it treated any error as fatal. In
 addition to that, GnuTLS (a SSLv3-only client, which cURL can be compiled
 with instead of OpenSSL) doesn't like servers which violate that spec and
 fails those requests too.

 So Google's servers (https://www.google.de, https://www.youtube.com) are
 actually violating SSL shutdown procedures under HTTP/1.0?

 I can see slight variations in the closing traces (`--trace`) when
 requesting HTTP/1.0 versions, but the handshake is identical.

 HTTP/1.1
 {{{
 == Info: Connection #0 to host www.youtube.com left intact
 }}}

 HTTP/1.0
 {{{
 == Info: SSL read: error:00000000:lib(0):func(0):reason(0), errno 0
 == Info: Closing connection 0
 == Info: SSLv3, TLS alert, Client hello (1):
 => Send SSL data, 2 bytes (0x2)
 0000: 01 00                                           ..
 }}}

 I can't see the shutdown traces. Why is the connection left intact in
 HTTP/1.1? In later versions of cURL both HTTP/1.1 and HTTP/1.0 requests
 result in:

 {{{
 == Info: Closing connection 0
 == Info: SSLv3, TLS alert, Client hello (1):
 => Send SSL data, 2 bytes (0x2)
 0000: 01 00                                           ..
 }}}

 Any ideas? Was/is cURL violating shutdown procedures and not closing the
 connection? What happened when it did, isn't Google responding correctly?

 Github (which doesn't error out on 7.31.0 via HTTP/1.0) produces an
 identical trace:
 {{{
 == Info: Closing connection 0
 == Info: SSLv3, TLS alert, Client hello (1):
 => Send SSL data, 2 bytes (0x2)
 0000: 01 00                                           ..
 }}}

 Still puzzled a bit. Is that a `close_notify` from the client?

--
Ticket URL: <http://core.trac.wordpress.org/ticket/26010#comment:8>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list