Re: [Emu] [lamps] EAP/EMU recommendations for client cert validation logic

"Owen Friel (ofriel)" <ofriel@cisco.com> Tue, 07 January 2020 13:53 UTC

Return-Path: <ofriel@cisco.com>
X-Original-To: emu@ietfa.amsl.com
Delivered-To: emu@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id DE78712011A; Tue, 7 Jan 2020 05:53:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.501
X-Spam-Level:
X-Spam-Status: No, score=-14.501 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com header.b=lbRcm54H; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=NxoSyXpW
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 uTgkNzvduMVj; Tue, 7 Jan 2020 05:53:30 -0800 (PST)
Received: from alln-iport-5.cisco.com (alln-iport-5.cisco.com [173.37.142.92]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 97111120116; Tue, 7 Jan 2020 05:53:30 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=19496; q=dns/txt; s=iport; t=1578405210; x=1579614810; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=yaQF7bl5eNIMDd6K8mejF2duADFXgvmVjxe4rCQZb1s=; b=lbRcm54H0znbDB+ZfaI9imYVfkmSS59m5mHORxz3rjB9sWY0qPnWLBv9 l8L0EgP0lcoMWKP/DNYzswwZ+96E3+QN6OvQ5qPOSAQhjDrbAAH9QifvP raWLyCCVSa1IWXICkrG6sNeq3z0Qoa0BrPqWWb2hWl9+aSvFjQnxhNbpz g=;
IronPort-PHdr: 9a23:vzLGvhRvxf2PVDVVk0aYcuPNDNpsv++ubAcI9poqja5Pea2//pPkeVbS/uhpkESUDNfA8/wRje3QvuigQmEG7Zub+FE6OJ1XH15g640NmhA4RsuMCEn1NvnvOis0BsVPUHdu/mqwNg5eH8OtL1A=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0D+AABjjBRe/5RdJa1QDQUCAhoBAQEBAQEBAQEDAQEBAREBAQECAgEBAQGBfIFUKScFbFAIIAQLKgqDf4NGA4sDgl+YDYJSA1QJAQEBDAEBJwYCAQGBTIIvRQIXgVIkOBMCAw0BAQQBAQECAQUEbYU3DIVeAQEBAQIBEhERDAEBNwEEBwQCAQgaAg8DAhICAgIwFRABAQQODRqDAYJGAw4gAQIMoRUCgTiIYXWBMoJ+AQEFgTUBg1QYggwDBoEOKIwZGoFBP4FYgkw+gmQCAoEeGRQMDEYHBYI8MoIsjTMZMwOCP4V7l3J1CoI2hzWMIoJgml+CDIQQkQuSDQIEAgQFAg4BAQWBaSKBWHAVgydQGA2NEgwXgQQBCYJCilN0CoEeinQPFQIHgQQBgQ8BAQ
X-IronPort-AV: E=Sophos;i="5.69,406,1571702400"; d="scan'208";a="406290925"
Received: from rcdn-core-12.cisco.com ([173.37.93.148]) by alln-iport-5.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 07 Jan 2020 13:53:29 +0000
Received: from XCH-RCD-002.cisco.com (xch-rcd-002.cisco.com [173.37.102.12]) by rcdn-core-12.cisco.com (8.15.2/8.15.2) with ESMTPS id 007DrTa6031403 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL); Tue, 7 Jan 2020 13:53:29 GMT
Received: from xhs-aln-001.cisco.com (173.37.135.118) by XCH-RCD-002.cisco.com (173.37.102.12) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 7 Jan 2020 07:53:28 -0600
Received: from xhs-rtp-003.cisco.com (64.101.210.230) by xhs-aln-001.cisco.com (173.37.135.118) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Tue, 7 Jan 2020 07:53:27 -0600
Received: from NAM12-BN8-obe.outbound.protection.outlook.com (64.101.32.56) by xhs-rtp-003.cisco.com (64.101.210.230) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Tue, 7 Jan 2020 08:53:27 -0500
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ga7/lGJRezIP2h8zGBwvUhjtguuuPGX7P6FvuPEvx9GqE9OxY6/O1An8aPBUePPBs5TJXFByKHgtUBpZiW4E41nvuoqanMCJFiRFKKjg2xLso884UIrPqw9r8THZ3pDp7lnlzitP3QxguaIwhfGwfR5bfZwTTX/UGWc5my35Rs9B6UVEwuIRN24/X9DsPN2Wtuohv6HIUWbOzNLai6A7U7beEf/U/V1mwliUs2iX0xn2N38YFE1iJv0gUIji61RFQrOEcbI5MOcBKER2GCf0/Sl9ebAs53crVoaEOIa2EP8nzVQWbgAcUqaG7RZj0zokTkH1Mhi4usxL3k1Jv+S/hg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yaQF7bl5eNIMDd6K8mejF2duADFXgvmVjxe4rCQZb1s=; b=E270A7fIJRXywB92f6i3xWmEo+mOA/2QC/oUjL+hiTa9z5DWwyGWOYgvif31idFsEDLGGGTIuOGaw5YoTDDSs9DDcw49LsRLGgcLZ7bLMXO8WZuTe7PtKDUIkyVMtt6i2Tq/iHGarC5278wAvjbB+qUjyZrg7qdu5hD3v8ctrSbxbJOX+ioSC8zXIC3NlgedkQpaydP+km0uzSgkENYVB4mgZtE7N4k2Z1UJs0mOQEL8pRP6MJrYfnCWRIUIVc8zx4Aq0yWS6citewRzElKIAbFvjM+3lSx/sh6ZDu/E+dTJsA2tldq9N+YNIRGltKNgTXrsi675CszRocb5xOojGw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cisco.com; dmarc=pass action=none header.from=cisco.com; dkim=pass header.d=cisco.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.onmicrosoft.com; s=selector2-cisco-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yaQF7bl5eNIMDd6K8mejF2duADFXgvmVjxe4rCQZb1s=; b=NxoSyXpWtQL7wuQxWI6IWoVfhQGEfPwkBJo8/ZU9zSug3vtaHgGd1o+p00nsx6nEwmOhtubgzVACFHyd6b1Z6flqDtJhoJVfvdPwkYwHEe8Eqw9PyqZh0LbEsrD2IDjDN6e32A053mye+DBbETQAm47yInpsXtr3Or0MIe3SEcU=
Received: from MN2PR11MB3901.namprd11.prod.outlook.com (20.179.150.76) by MN2PR11MB3597.namprd11.prod.outlook.com (20.178.251.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2602.15; Tue, 7 Jan 2020 13:53:25 +0000
Received: from MN2PR11MB3901.namprd11.prod.outlook.com ([fe80::d1b8:3e63:ead8:10c9]) by MN2PR11MB3901.namprd11.prod.outlook.com ([fe80::d1b8:3e63:ead8:10c9%7]) with mapi id 15.20.2602.015; Tue, 7 Jan 2020 13:53:25 +0000
From: "Owen Friel (ofriel)" <ofriel@cisco.com>
To: Ryan Sleevi <ryan-ietf@sleevi.com>
CC: EMU WG <emu@ietf.org>, "spasm@ietf.org" <spasm@ietf.org>
Thread-Topic: [lamps] EAP/EMU recommendations for client cert validation logic
Thread-Index: AdWxNKzqTmo8NKHtQwSIp+NEgFXHNACbMPUABG/okFA=
Date: Tue, 07 Jan 2020 13:53:24 +0000
Message-ID: <MN2PR11MB3901E7D5D8C2D1E89245E4C5DB3F0@MN2PR11MB3901.namprd11.prod.outlook.com>
References: <MN2PR11MB3901F9B86DAC83AF67FBA49DDB560@MN2PR11MB3901.namprd11.prod.outlook.com> <CAErg=HEzR4U9L2Bbj65hSKo4=GEHv=NVGkySFpdCaK2NoJBmFQ@mail.gmail.com>
In-Reply-To: <CAErg=HEzR4U9L2Bbj65hSKo4=GEHv=NVGkySFpdCaK2NoJBmFQ@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=ofriel@cisco.com;
x-originating-ip: [64.103.40.27]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 9d1554cc-1e03-413e-be3d-08d79378f765
x-ms-traffictypediagnostic: MN2PR11MB3597:
x-microsoft-antispam-prvs: <MN2PR11MB359763409EFE558A0F199712DB3F0@MN2PR11MB3597.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 027578BB13
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(346002)(366004)(396003)(376002)(13464003)(189003)(199004)(51914003)(51444003)(55016002)(8676002)(5660300002)(81166006)(8936002)(2906002)(81156014)(4326008)(9686003)(6916009)(64756008)(33656002)(66446008)(30864003)(186003)(26005)(52536014)(7696005)(6506007)(66556008)(478600001)(71200400001)(66476007)(86362001)(66574012)(66946007)(76116006)(54906003)(316002)(966005); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR11MB3597; H:MN2PR11MB3901.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None (protection.outlook.com: cisco.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 0d7lTn5xhAEcuyvQ+/sd/eguxxqDopZJJqsGsky/OKGWdbbgh/tICUbSfReJL3oMGsuWy9NZVAL7bxUIoy1rIx7odtIPA+yAA3thgRFDsZ43NYvqRGI636d8odIISz6sxndhUWbsK7e7Hftgmp6hAQVl6TCxP5LTUI52qVOIrn1QQNilOt90iH/vPqAqGlgqSDwE9msn2BGNptXiTT257v43Sqo0wgt2hqR8zBD3lEcJT0icQardoyiyQHQL4hBTftQTscYfJnW8lQbF2ZZGJgVrvwecCaK+kgU5fXjwjshQmwlPmj7kuJhmu8rJN8xfJW+Tc9Uea5ZX8GbMVZGZcAazLmncycQlZdyHeIAFZJ5cnhzF132qJZBG2ywtLBLx0Wo8ogNvs6pCI2HCto7C1+Gtc8jFi1HAb49F+og+glPvzS09zeKQw3wzlJAMGcShc1kMwELNRvkD/uVl8tBU/XsbKip+idPAbgL+++eASsQsUoNs4erygvMbtVlSLFyoI0RBzbL7KH75yCX/ZtRFcYYQ9rFTA4mVOhHVeipK0zNcdsrKKBaGC+n6Wx4U2XOLZGv2dffLPzYGT3wo34TWqsFFr9gAHz8of+RW7V6C4VJiy/MEqrawbvppI5IOOqWF
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 9d1554cc-1e03-413e-be3d-08d79378f765
X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jan 2020 13:53:25.0694 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: abA3OBkzx2OwYq4H5oITNSJ0ylvxE+/Mdhzlenqr6+M/pewt/exr0xCAQ58cV1zzL75o5X0fYzUB7b82B1loWA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3597
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.37.102.12, xch-rcd-002.cisco.com
X-Outbound-Node: rcdn-core-12.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/emu/w6pILk10Sr58W5mT4u9nLpO4hxA>
Subject: Re: [Emu] [lamps] EAP/EMU recommendations for client cert validation logic
X-BeenThere: emu@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "EAP Methods Update \(EMU\)" <emu.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/emu>, <mailto:emu-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/emu/>
List-Post: <mailto:emu@ietf.org>
List-Help: <mailto:emu-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/emu>, <mailto:emu-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 07 Jan 2020 13:53:33 -0000

Thanks for the detailed reply Ryan. See line.

> -----Original Message-----

> 
> If an EAP server operator wants to use a public CA identity cert on their EAP
> server, what recommendations should we give to EAP clients so that the
> supplicant code can handle public or private CA issued EAP server identity in a
> secure a fashion as possible?
> 
> Define “public CA” first, and it’ll be clearer that the question is really
> supplicant-specific.
> 
> That is, most definitions for “public CAs” come down to “I don’t want to think
> about / analyze the security or validation practices of the CA, I want my
> supplicant / software / hardware vendor to do it for me, against some criteria
> the vendor is responsible for, and hope it all works out”. To the extent TLS
> uses ‘public CAs’, it either boils down to the OS or browser vendors reaching
> rough (independent) consensus on who is worth trusting, or the vendor
> going along with everyone else’s decisions for cost (too expensive for the
> vendor to evaluate) or compatibility (everyone else trusts them and it’d
> break things if the vendor doesn’t) reasons.
 

[ofriel] That’s pretty much it. For supplicants running on standard OSes (Windows, MacOS, iOS, Android), they could use logic similar to Chromium (which you must be familiar with seeing as you helped write it: https://github.com/chromium/chromium/commit/36f20e46515ab61df4ae4af9655b647bf9a0ea5a#diff-fa455b6e65ab2ae19d64635ada88077e ) to ask the OS if a presented EAP cert is one issued by a public CA. This does mean that the supplicant is asking about Web TLS certs that Browsers trust. However, there are ample examples and support cases opened by operators who are trying to do exactly that – get a web PKI cert from a public TLS/Browser CA and deploy it on an EAP server. Is this recommended? Not really. Is it using a Web/TLS cert for a purpose its not strictly intended for? Yes. Does this happen in real deployments? Absolutely. How prevalent is it? I do not have that data.

> 
> Is the supplicant market likely to reach that consensus? It seems unlikely,
> unless and until you define the “thing everyone can and wants and needs to
> validate”, and that thing is either globally unique (like DNS) or sufficiently
> domain specific (e.g. Passpoint) that vendors can agree.
> 

[ofriel] I think the supplicants running on the main OSes would be happy to delegate the question of whether a CA is a ‘public CA’ to the OS. For manufacturers of things/embedded devices/etc. then its currently very much at the manufacturers discretion, and consensus here would be unlikely.

> If at some point in the future, public CAs are willing to issue certs with some
> or all of the above fields, then what is the migration plan, what do we tell EAP
> clients to do now, and how to they migrate their verification logic?
> 
> This statement similarly requires untangling. There are “public CAs” as “The
> set of keys/certificates used for authenticating particular services” and
> “public CAs” as the set of organizations that own/operate those keys.
> 
> The case of the former is extremely unlikely, as the industry is actively
> moving away from that approach to PKI, by trying to ensure separate keys
> for separate use cases or authentication realms, of which EAP would surely
> be. 
 
[ofriel] And by this you mean that a root CA will have e.g. one intermediate with EKUs of id-kp-serverAuth/id-kp-clientAuth, and a different intermediate with an EKU for id-kp-emailProtection, right? The logical extension here for EAP is yet another intermediate with an EKU for id-kp-eapOverLAN.

The case of the latter is already available from said organizations as part
> of “managed CA” or “private CA” offerings, which are operated by that public
> CA organization, but that’s effectively greenfield because you aren’t having
> to interoperate with any extant keys or certificate profiles.
> 


[ofriel] Right, but from a supplicant perspective (or in general for any client running on any OS e.g. Browser on Windows), there is zero difference between an operator who deploys and runs their own private CA, or takes a contract out with a public CA organization and gets them to run a managed/private CA on their behalf.

> The ideal experience would be along these lines for a client with real user
> interactions:
> - client connects to an EAP server
> - client prompts user for userId + realm and password
> - client verifies server cert has id-kp-eapOverLAN set
> 
> What assurance is this to provide?


[ofriel] To assure that the cert is for the intended purpose – 802.1X/EAP server auth. Just like other TLS/Browser clients checks for id-kp-serverAuth

> 
> - NAIRealm in cert matches user’s realm
> 
> This only works iff the NAIs are globally unique (e.g. map to DNS), which
> imposes requirements on NAIs that aren’t present in RFC 7542, and
> seemingly intentionally, compared to 4282.
> 
> - verify the cert signing chain
> 
> The reality today is that if the server cert is issued by a public CA, then all that
> client can really check is:
> - id-kp-serverAuth is set
> - dNSName in cert matches user’s realm
> - verify the cert signing chain
> 
> We would like to document some recommendations for EAP clients and EAP
> operators so that public CAs could be used, and recommend checks for public
> vs. private CA issued EAP server certs.
> 
> If you mean the same set of CAs and keys used for TLS by common operating
> systems and browsers, it bears highlighting again: industry is moving away
> from that. Which is to say that contracts and requirements for PKIs used “by
> default” by browsers and operating systems are being explicit about the
> need to segment purpose and use case and not use such certificates for such
> purposes.
> 


[ofriel] I agree that ideally  Web/TLS Browser certs should not really be used by operators as their EAP server identity certs, however, this does actually happen today. In an ideal world, it would be great if some of the large commercial (or free e.g. LetsEncrypt) public Web/TLS CAs had an intermediate signing CA with id-kp-eapOverLAN. But today, and for the foreseeable future, what can we advise supplicants to do if we know that some operators will put Web/TLS identity certs from public CAs on their EAP servers?

> Already, TLS and e-mail, the two dominant uses of PKI in such systems, are
> required to be distinguished at their intermediate level. Browsers are looking
> to explicitly only trust the TLS-Web side of the PKI, and making sure that the
> TLS-Web PKI side is highly agile. Other cases, such as restricted use server to
> server PKI or industry bespoke cases (such as financial services or system
> networking) are being restricted to PKIs that aren’t federated-by-default.
> 
> For example, X9 recently revived their PKI WG, to define PKI requirements
> appropriate for financial services customers (like ATM to bank), because
> financial services struggle to move at the same speed as modern software,
> for understandable reasons. The use of domain/purpose-specific PKIs is
> something we can and should be embracing more of.


[ofriel] Sure, I’m not saying that id-kp-eapOverLAN is a bad idea or that supplicants should never look for it. But how do we get to the point where we could actually enforce that, given that today operators do try to use EAP with Web/TLS certs.

> 
> It seems like logic should be something like:
> 
> - recommend EAP operators with private CA issued certs on their EAP servers
> set id-kp-eapOverLAN and NAIRealm set
> - recommend EAP operators using public CAs get EAP server certs with id-kp-
> serverAuth and dNSName set
> - recommend clients enable trust in public CAs
> 
> This is why I started with trying to define what “public CAs” are. If you mean
> the extant CAs trusted by browsers and operating systems, both this
> recommendation and the one proceeding it may not be good
> recommendations or long-term viable practices.


[ofriel] Yes, I mean extant CAs trusted by Browsers and OSes. Yes the recommendations as written above would mean using a cert with a EKU for one purpose, for a different purpose, but that is the unfortunate reality. Do we ignore the problem and say ‘Don’t do this’ or do we try to document some compromise recommendations for both supplicants and CAs, with a roadmap of how to evolve?

> 
> That’s not to say you couldn’t, but it means your EAP services and servers
> need to be prepared to be as agile as the Web ecosystem is and modern
> operating systems are converging on. The ability to support or be beholden
> to “legacy” - whether algorithms, profiles, or trust in particular organizations -
> is something that industry is recognizing does not align with user needs. This
> means adopting practices like automation, being able to quantify
> compatibility risks, and being able to move quickly as expectations change, in
> response to ecosystem challenges.
> 


[ofriel] I hope that this problem is easier to tackle for supplicants running on the major OSes. For things/embedded devices, this is a far harder problem to solve for sure.

> Maybe that’s fine for EAP, but I’m willing to suspect that it because updates
> may involve physically replacing client hardware or physically installing
> firmware, you really don’t want EAP needing to be beholden to those agility
> needs of the Web and OSes. And, again, that’s perfectly OK, it just means
> defining a PKI and set of procedures that is appropriate for that use case, and
> convincing industry to adopt it as an “out of the box” configuration. Or,
> alternatively, embracing private PKI.
> 


[ofriel] Maybe an approach to take is to have one set of recommendations for supplicant clients on major OSes where they can delegate, and possibly piggy back on top of, similar OS functionality for Web/TLS; and have a different looser set of recommendations for thing manufacturers. Or possibly frame the requirements as ‘requirements the supplicant should enforce’ vs. ‘requirements the supplicant should delegate to the OS (e.g. is this a public CA?)’.

> - recommend clients implement different cert verification logic depending on
> whether the EAP server cert is issued by a public CA or private CA
> 
> Why is this good?
> 
> To the extent browsers or OSes make this distinction, it’s largely based on
> simply phasing rollouts of new requirements, with the goal to eventually
> require consistent and uniform treatment to ensure simpler code with
> consistent and uniform security properties. Having a long-term segmentation
> of requirements, or even encouraging them without a clear vision back to
> harmonization, is definitely an anti-pattern here.


[ofriel] Completely agree. Which is why I stated below “as a longer term goal see if public CAs will issue id-kp-eapOverLAN and NAIRealm”

> - for public CA certs, client checks that id-kp-serverAuth is set *and*
> dNSName matches user realm. If either check fails, reject.
> - for private CA certs, client checks that id-kp-serverAuth or id-kp-
> eapOverLAN is set *and* NAIRealm matches user realm.. If either check fails,
> reject.
> 
> - as a longer term goal see if public CAs will issue id-kp-eapOverLAN and
> NAIRealm. Although of course if some were to start doing this, then there is
> a migration challenge, and clients cannot make a hard check for these values
> against all public CAs. This doesn’t really seem practical in the near term at all.
> 
> The effect of the separate EKU, which is actually quite desirable, is that it
> functionally makes it difficult for CAs to issue these certificates from
> intermediated that lack this EKU or any EKU. Further,  CAs subject to
> browser/OS vendor oversight are consistently required to segment out their
> EKUs at the intermediate level, and required to always specify EKUs.
> 
> The end result is that, to achieve this long term goal, you’ve effectively
> required the establishment of a new PKI - just at the intermediate level
> rather than the root. And as many of the public CAs can tell you, having
> recently encountered challenges regarding non-TLS intermediates from roots
> that are subject to browser/OS oversight, it’s often easier to use separate
> roots as well.
> 
> Again, I think that’s desirable, to define an entirely new PKI with zero overlap
> with the server auth/TLS PKI used by OSes/browsers, but that does change
> your recommendations and design a bit :) The short term recommendation
> becomes “don’t use public CAs”, and that seems easier to explain and easier
> to evolve the technical requirements, until the time that such a new, EAP-
> specific public PKI can be introduced.
> 


[ofriel] Getting public CAs to manage a new PKI root (if that’s easier than just a new intermediate) with id-kp-eapOverLAN is a really really long road. And we know that some operators do use public Web/TLS certs as EAP identity certs. Which means that we cannot recommend supplicants enforce a check for id-kp-eapOverLAN.

So it looks like there are three choices:
1.	Completely ignore id-kp-eapOverLAN for ever.
2.	Get supplicants to check id-kp-eapOverLAN if its not a public CA (and use Chromium style public CA detection). Rollout of this would need to be carefully managed too so that existing private CA operators who do not set id-kp-eapOverLAN do not break.
3.	Do nothing until  sufficient numbers of public CAs support id-kp-eapOverLAN (in like 2035..?), then change supplicants to always check for id-kp-eapOverLAN.

Its not clear to me where the correct forum is to even document these recommendations, or who needs to be involved.

> In my mind, this is no different from organizations that want TLS certificates
> for their servers named “webmail” (not globally unique) or
> “mail_01.company.example” (not preferred name form / LDH). The answer is
> “use private CAs, don’t use public CAs”
> 
>