Re: [hybi] failed TLS handshake: which close code?

Tobias Oberstein <tobias.oberstein@tavendo.de> Mon, 24 October 2011 14:55 UTC

Return-Path: <tobias.oberstein@tavendo.de>
X-Original-To: hybi@ietfa.amsl.com
Delivered-To: hybi@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1C35921F8E46 for <hybi@ietfa.amsl.com>; Mon, 24 Oct 2011 07:55:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[AWL=-0.000, BAYES_00=-2.599, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5eYGQk2kn9mF for <hybi@ietfa.amsl.com>; Mon, 24 Oct 2011 07:55:38 -0700 (PDT)
Received: from EXHUB020-1.exch020.serverdata.net (exhub020-1.exch020.serverdata.net [206.225.164.28]) by ietfa.amsl.com (Postfix) with ESMTP id A472E21F8E45 for <hybi@ietf.org>; Mon, 24 Oct 2011 07:55:37 -0700 (PDT)
Received: from EXVMBX020-12.exch020.serverdata.net ([169.254.3.230]) by EXHUB020-1.exch020.serverdata.net ([206.225.164.28]) with mapi; Mon, 24 Oct 2011 07:55:26 -0700
From: Tobias Oberstein <tobias.oberstein@tavendo.de>
To: Alexey Melnikov <alexey.melnikov@isode.com>, "Richard L. Barnes" <rbarnes@bbn.com>
Date: Mon, 24 Oct 2011 07:55:24 -0700
Thread-Topic: [hybi] failed TLS handshake: which close code?
Thread-Index: AcySUPfuAQDulTv5S/GqcmdGUkmQwQAC2sWg
Message-ID: <634914A010D0B943A035D226786325D42D0B036E63@EXVMBX020-12.exch020.serverdata.net>
References: <634914A010D0B943A035D226786325D42D0B036D6D@EXVMBX020-12.exch020.serverdata.net> <CADkeqZXXRkXCRrONLr5thwOqNVUxNWU0Q-9E0R0i=4S-bc-LFw@mail.gmail.com> <CADkeqZXDvu-JY8aZHJJPRH-_JnF196JjA_JG6X_1yrYSiAekuA@mail.gmail.com> <CADkeqZWdFrmEyJEmHy+tfgsJXS1nU3ASx20-=uwwLY6EZogc0A@mail.gmail.com> <7ECB103B-4C75-49B2-A29B-ABCF91B3DB36@bbn.com> <CADkeqZWGEc6s=6UnQqzU5uGy+Jci5d7n9We+9kcHj+o8=y2SwA@mail.gmail.com>
In-Reply-To: <CADkeqZWGEc6s=6UnQqzU5uGy+Jci5d7n9We+9kcHj+o8=y2SwA@mail.gmail.com>
Accept-Language: de-DE, en-US
Content-Language: de-DE
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: de-DE, en-US
Content-Type: multipart/alternative; boundary="_000_634914A010D0B943A035D226786325D42D0B036E63EXVMBX02012ex_"
MIME-Version: 1.0
Cc: "hybi@ietf.org" <hybi@ietf.org>
Subject: Re: [hybi] failed TLS handshake: which close code?
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 24 Oct 2011 14:55:39 -0000

Yep, its not about _sending_ a close frame (which would be silly). Its about signaling the application.

There are already two close code which must not be used on the wire and are
only there for signaling errors to the application: 1005 and 1006.

The spec says they must not be used on wire, the spec does not speak about
whether the codes must only be used when a WS connection previsously existed ..


Von: hybi-bounces@ietf.org [mailto:hybi-bounces@ietf.org] Im Auftrag von Alexey Melnikov
Gesendet: Montag, 24. Oktober 2011 15:29
An: Richard L. Barnes
Cc: hybi@ietf.org
Betreff: Re: [hybi] failed TLS handshake: which close code?

Hi Richard,
On Mon, Oct 24, 2011 at 2:22 PM, Richard L. Barnes <rbarnes@bbn.com<mailto:rbarnes@bbn.com>> wrote:
+1

It's silly to require the WS implementation to send a close frame in plaintext after the TLS connection fails.  I don't even think this sort of thing would be supported by standard TLS libraries.
Right. But the TLS-related code(s) might have to be allocated for use in the WebSocket API.

--Richard



On Oct 24, 2011, at 9:09 AM, Alexey Melnikov wrote:

> On a second thought: TLS fails before WebSocket connection is established, so (unless I am missing something) TLS related close codes will never be sent on the wire. However reserving some WebSocket codes is still a good idea.
>
> On Mon, Oct 24, 2011 at 2:04 PM, Alexey Melnikov <alexey.melnikov@isode.com<mailto:alexey.melnikov@isode.com>> wrotetL
> That was supposed to be sent to the mailing list. The WG should consider adding multiple codes if needed.
>
>
> ---------- Forwarded message ----------
> From: Alexey Melnikov <alexey.melnikov@isode.com<mailto:alexey.melnikov@isode.com>>
> Date: Mon, Oct 24, 2011 at 1:34 PM
> Subject: Re: [hybi] failed TLS handshake: which close code?
> To: Tobias Oberstein <tobias.oberstein@tavendo.de<mailto:tobias.oberstein@tavendo.de>>
>
>
> Hi Tobias,
>
> On Mon, Oct 24, 2011 at 3:58 AM, Tobias Oberstein <tobias.oberstein@tavendo.de<mailto:tobias.oberstein@tavendo.de>> wrote:
> Hybi-17:
>
> """
> 4. Opening Handshake
> ...
> 4.1. Client Requirements
> ...
>   5.  If /secure/ is true, the client MUST perform a TLS handshake over
>       the connection after opening the connection and before sending
>       the handshake data [RFC2818].  If this fails (e.g. the server's
>       certificate could not be verified), then the client MUST _Fail
>       the WebSocket Connection_ and abort the connection.  Otherwise,
>       all further communication on this channel MUST run through the
>       encrypted tunnel.  [RFC5246]
> """
>
> When the client fails the TLS handshake (i.e. because of invalid server certificate),
> which close status code would be appropriate to use for signaling that specific
> reason to the caller?
>
> Is it supposed to use a close status code from the following range?
>
> """
>   3000-3999
>
>      Status codes in the range 3000-3999 are reserved for use by
>      libraries, frameworks and application.  These status codes are
>      registered directly with IANA.  The interpretation of these codes
>      is undefined by this protocol.
> """
>
> Or are those only for "use on wire" not for signaling the caller?
>
> For example, Firefox currently provides the calling JavaScript with a "1006 Abnormal Connection Close":
>
> """
>  1006
>
>      1006 is a reserved value and MUST NOT be set as a status code in a
>      Close control frame by an endpoint.  It is designated for use in
>      applications expecting a status code to indicate that the
>      connection was closed abnormally, e.g. without sending or
>      receiving a Close control frame.
> """
>
> However, this could be multiple things and is not giving the real reason to the JS.
> The JS thus can't react specifically ..
>
> TLS handshake probably deserves a separate 1XXX close code.
>
>
>
> _______________________________________________
> hybi mailing list
> hybi@ietf.org<mailto:hybi@ietf.org>
> https://www.ietf.org/mailman/listinfo/hybi