Re: [TLS] HTTPS client-certificate-authentication in browsers

Martin Rex <> Tue, 26 July 2011 19:11 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 109865E8002 for <>; Tue, 26 Jul 2011 12:11:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -9.556
X-Spam-Status: No, score=-9.556 tagged_above=-999 required=5 tests=[AWL=0.093, BAYES_00=-2.599, HELO_EQ_DE=0.35, J_CHICKENPOX_62=0.6, RCVD_IN_DNSWL_HI=-8]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id pP8pUlhorXKu for <>; Tue, 26 Jul 2011 12:11:10 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 6084D5E8001 for <>; Tue, 26 Jul 2011 12:11:06 -0700 (PDT)
Received: from by (26) with ESMTP id p6QJB40R022729 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 26 Jul 2011 21:11:04 +0200 (MEST)
From: Martin Rex <>
Message-Id: <>
To: (Anders Rundgren)
Date: Tue, 26 Jul 2011 21:11:03 +0200 (MEST)
In-Reply-To: <> from "Anders Rundgren" at Jul 26, 11 06:15:58 am
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-SAP: out
Subject: Re: [TLS] HTTPS client-certificate-authentication in browsers
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 26 Jul 2011 19:11:12 -0000

Anders Rundgren wrote:
> On 2011-07-26 01:51, Martin Rex wrote:
> >
> > Anders Rundgren wrote:
> > >
> > > I don't believe that TLS CCA (Client Certificate Authentication) in the
> > > form of HTTPS as implemented in current browsers has much of a future.
> > 
> > It works perfectly fine and we've been using it >10 years for
> > all of our intranet (50.000 employees these days) web servers
> > accessed via HTTPS, using TLS client certs for Single Sign-On.
> > (similar to how Kerberos is used by others).
> I'm sure about that.  My perspective are consumers.

My perspective is also consumers.
TLS client authentication is about Single Sign-On.

And the most convenient incarnation of it is popup-free single sign-on.

> > 
> > What you're looking at here is scenarios for individually authenticated
> > transactions.  That is an entirely different problem domain and not
> > addressed by TLS at all.  You would have to address that with
> > a browser plugin that accesses a completely different PKI credential
> > that has signature qualities, with a clearly defined protocol that
> > describes what data gets signed, and which requires seperate per-transaction
> > authorization for every signature operation.
> There was even a Danish e-government standard for PKI authentication
> that rides on top of server-auth-only HTTPS.  They also have a
> companion scheme doing web signatures which indeed uses another
> key.  There are lots of similar systems out there.
> Are all these guys morons?  I believe they are rather dissatisfied
> with how HTTPS CCA works.  So am I.

Not understanding the underlying technology at all and not discussing
with software suppliers how a standardized but hardly used protocol
option works is more than a little naive on my scorecard.

Microsoft foobar'ed client certs in WinHTTP (a component distinct
from MSIE) and fixed it here
when we asked them to.

When Apple shipped Safari for Windows they did not find that winhttp
fix and made their browser exhibit the exact same bugs.  We told
them in January 2009, but they were still shipping defective
Safaris for Windows in April 2010...

Google Chrome used WinHTTP only for a short time and got rid of the
problem when it dumped WinHTTP.

> > 
> > If the server wants to perform a logout operation,
> > it can delete the TLS session cache entry on the server.
> > 
> > But the Single Sign-On capability of the TLS client cert means
> > that as long as the client credential is still available to the
> > TLS client, the client will perform "transparent" reauthentication.
> Doesn't this actually lead to what I'm saying from a practical
> point of view?


It doesn't make any flawed assumptions less flawed, of course.

> What you can do at the TLS layer is BTW very little
> at least if you are using Servlets.  For other authentication
> methods logout (HttpSession.invalidate) works as expected.

You misunderstand the concept of "Single Sign-On" as offered by TLS.

> >> The button "Clear SSL state" in MSIE is an indication how horribly bad it
> >> can go when security experts design systems for "people".
> > 
> > Is your intention to get prompted again?
> >>From a usability standpoint, we prefer the "select automatically"
> > setting and spare our users the client certificate selection popup.
> I don't really want to know what it does actually.  The mere existence
> of such a button signals that something is terribly wrong :-)

The equivalent for Kerberos (win7 in a windows domain) is "klist purge".
(Although the Kerberos ticket purge does _NOT_ result in the prompting
when new TGTs and new tickets are acquired.

> >> There's no way you can hide the fact that TLS CCA is only truly useful
> >> securing tunnels between "boxes".
> > 
> > The purpose of the TLS CCA is the same as the purpose of Kerberos,
> > to provide a non-disclosing Single Sign-On convenience.
> But Kerberos is built on using a ticket after primary auth and
> that's exactly what most "Web Programmers" would like to do
> because then you just have to invalidate the ticket to force
> reauth.

Huh?  That is not how Kerberos works.  Kerberos tickets are
not invalidated at all.  And with Kerberos, you get even less
prompting (more seamless Single Sign-On) than with TLS client certs.

> Services should time-out but most HTTPS CCA-based services do not.
> I noted this first when logging in to the Swedish Tax authority.
> They are all morons?  Maybe.
> But the TLS WG has nothing to offer AFAICT.

What you are looking for is for a completely different protocol
layer than TLS.  If you want application level session management,
you have to do application level session management.  TLS provides
you a secure tunnel with Single Sign-On and fast session resumption
over later transport connections to the same target (to better match
the connection characteristics of HTTP).