Re: Client Certificates - re-opening discussion

Kyle Rose <krose@krose.org> Mon, 21 September 2015 12:26 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ie@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 9DEDA1B3117 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 21 Sep 2015 05:26:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.39
X-Spam-Level:
X-Spam-Status: No, score=-6.39 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, RCVD_IN_DNSWL_HI=-5, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4H2UBrbiRHH1 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 21 Sep 2015 05:26:56 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 230CC1B3145 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Mon, 21 Sep 2015 05:26:15 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.80) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1Ze07w-0003y6-2b for ietf-http-wg-dist@listhub.w3.org; Mon, 21 Sep 2015 12:23:24 +0000
Resent-Date: Mon, 21 Sep 2015 12:23:24 +0000
Resent-Message-Id: <E1Ze07w-0003y6-2b@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <krose@krose.org>) id 1Ze07p-0003xK-Q2 for ietf-http-wg@listhub.w3.org; Mon, 21 Sep 2015 12:23:17 +0000
Received: from mail-ig0-f180.google.com ([209.85.213.180]) by lisa.w3.org with esmtps (TLS1.2:RSA_ARCFOUR_SHA1:128) (Exim 4.80) (envelope-from <krose@krose.org>) id 1Ze07n-00071q-Oe for ietf-http-wg@w3.org; Mon, 21 Sep 2015 12:23:17 +0000
Received: by igbni9 with SMTP id ni9so56336435igb.0 for <ietf-http-wg@w3.org>; Mon, 21 Sep 2015 05:22:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=krose.org; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=dJ/E87SKl27dUqIkFW7sNA95lf+y/7gdtq1XEnebhj0=; b=KmXzw+ajGXqsh71szNiP/LJfSZ9NcE8zo5sHnTpYrO70SDfpqzmBVenOi/0Y4WcEdY gMSM/8D1sCLDD+g91+5XRH3ZOV5ffEJvDXgH9G2kVDNTIlSEnPAB98itMHjlnomZVMnx oG1QhVkLPWerUZgDTSq4RdgSK/5UMFeYW3bA0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=dJ/E87SKl27dUqIkFW7sNA95lf+y/7gdtq1XEnebhj0=; b=l9WBx3R0avH0ARJZ35fI/6W2CHeA3uxEkza/fEn3hn/uGXl70WdMfXGOwsfE149MvQ dgIZK0lMN0yPN4V+2I7wN4W6ENItyWWuoz/fS5KMlKRj5iDQX8BzkFHxxolJXBTIJ0Av MY8SDIywYRaR4I6ZEgJaI5+GuTlcVVZbeN/DkcmD3IumG4CC9cK+EohpuRgEs+XDpN3D WthYLJ6t0oVqAKhvaMTkj9OOEPJAEYkpf2uX9gU8bMGBfWMGaQ5fvi/Eo1CaC1C/vcxn LsMvsFYXLuu/tRGGg+cBS/9naPY9VDDyFiEURxeDPJxcVJagG0z3uSoglkfOPt8devWz vx9Q==
X-Gm-Message-State: ALoCoQnJpCNupAAfdih5jGUIYwclO7lUEC/PiuBuSggTqCpxERYM9kFarb5qT4toEOLVmvfy4tXT
MIME-Version: 1.0
X-Received: by 10.50.30.226 with SMTP id v2mr10632042igh.11.1442838168180; Mon, 21 Sep 2015 05:22:48 -0700 (PDT)
Received: by 10.79.31.130 with HTTP; Mon, 21 Sep 2015 05:22:48 -0700 (PDT)
X-Originating-IP: [2001:470:1f07:121:4df3:c4ce:3589:44db]
In-Reply-To: <68879535-44AB-4E68-BA42-827BA334D9A8@gmail.com>
References: <63DECDF0-AB59-4AFD-8E48-8C2526FD6047@mnot.net> <42DDF1C6-F516-4F71-BAE0-C801AD13AA01@co-operating.systems> <2F3BD1CB-042D-48AB-8046-BB8506B8E035@mnot.net> <CABcZeBNpjbNdeqxP_cwCDygk6_MVDoNhqcMEDmEvEBxztmonLg@mail.gmail.com> <20150918205734.GA23316@LK-Perkele-VII> <70D2F8CE-D1A2-440F-ADFC-24D0CE0EDCF1@greenbytes.de> <CABcZeBPNxEA6O324tnF3dbUCLD-a7uUvWYYjO1pnYwAm9cN2eA@mail.gmail.com> <CY1PR03MB1374F1CA73EFDA80C7CE44E887580@CY1PR03MB1374.namprd03.prod.outlook.com> <9BD53F44-94BA-4931-891A-BD94B5F440D0@gmail.com> <CY1PR03MB1374BE698FEB732EBB9BD96087460@CY1PR03MB1374.namprd03.prod.outlook.com> <68879535-44AB-4E68-BA42-827BA334D9A8@gmail.com>
Date: Mon, 21 Sep 2015 08:22:48 -0400
Message-ID: <CAJU8_nX3kOxTavtz6s8EV_M0wfvgQorDsVDRszqqebVEHh++kw@mail.gmail.com>
From: Kyle Rose <krose@krose.org>
To: Yoav Nir <ynir.ietf@gmail.com>
Cc: Mike Bishop <Michael.Bishop@microsoft.com>, Eric Rescorla <ekr@rtfm.com>, Stefan Eissing <stefan.eissing@greenbytes.de>, Ilari Liusvaara <ilari.liusvaara@elisanet.fi>, Mark Nottingham <mnot@mnot.net>, Henry Story <henry.story@co-operating.systems>, HTTP Working Group <ietf-http-wg@w3.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Received-SPF: pass client-ip=209.85.213.180; envelope-from=krose@krose.org; helo=mail-ig0-f180.google.com
X-W3C-Hub-Spam-Status: No, score=-4.7
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: lisa.w3.org 1Ze07n-00071q-Oe b65e50f27a85e42707152a33769ac2a8
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Client Certificates - re-opening discussion
Archived-At: <http://www.w3.org/mid/CAJU8_nX3kOxTavtz6s8EV_M0wfvgQorDsVDRszqqebVEHh++kw@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/30244
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

> Having the application layer stall doesn’t help. The client requests
> resources A, B, and C. Resource B requires client authentication. By the
> time the application stalls, waiting for the client authentication,
> resources A and C may not have been noticed, or the requests may have been
> serviced, with A and C in a buffer waiting to be encrypted, or the requests
> may have been serviced and encrypted and on the way back to the client. A
> and C may be received in the authenticated or the non-authenticated context.
> Imagine, for example, that A is a bit of HTML that says “Hello, guest” in
> the unauthenticated context, or “Hello, Mike” after authentication. You can
> get the certificate picker and still see the “Hello, guest” on the page.
>
> What’s more, I think HTTP authentication has the same issue. If one request
> gets processed and generates a 401 with WWW-Authenticate, other resources
> may or may not have been serviced. You can fix this by carefully designing
> the application so that you don’t load resources that are different based on
> state at the same time as the authentication is going on.
>
> If multiple requests cause the server application to query the HTTP layer
> for the client’s certificate, then all those requests will wait until the
> client authentication has completed, just as they would have on a
> non-multiplexed connection.  Where multiplexing adds a new wrinkle is that,
> under HTTP/1.1, those connections that didn’t require authentication would
> proceed without interruption until they’re used for a protected request.

How did this work in practice with HTTP/1.1, with browsers having
multiple simultaneous connections open to the same server?

If I had to guess, I'd say that the primary resource requiring
authentication was typically the root HTML for a page, which would
then of course stall every subsequent request for subresources without
any specific support required in the client: neither multiplexing H2
nor simultaneous HTTP/1.1 connections would be subject to a race
condition in this case, requests for the URLs from previously-loaded
pages that vary on authentication notwithstanding. Otherwise, I'm
guessing the user would have a sub-par UX (e.g., multiple certificate
chooser dialogs).

Kyle