Re: [nfsv4] NFS over TLS for laptops

Rick Macklem <rmacklem@uoguelph.ca> Thu, 17 December 2020 23:58 UTC

Return-Path: <rmacklem@uoguelph.ca>
X-Original-To: nfsv4@ietfa.amsl.com
Delivered-To: nfsv4@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 532413A095F for <nfsv4@ietfa.amsl.com>; Thu, 17 Dec 2020 15:58:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.101
X-Spam-Level:
X-Spam-Status: No, score=-2.101 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=uoguelph.ca
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 0fzLNu6qTYr8 for <nfsv4@ietfa.amsl.com>; Thu, 17 Dec 2020 15:58:45 -0800 (PST)
Received: from CAN01-TO1-obe.outbound.protection.outlook.com (mail-eopbgr670049.outbound.protection.outlook.com [40.107.67.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 15CD73A0965 for <nfsv4@ietf.org>; Thu, 17 Dec 2020 15:58:44 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ehXeJ6nfOAKj18VrcjnTBjMnKZr8Dm+lzqLhWMPY0QpyPRJh+o+akX1ha8n8fv7/WbP8X81AWHZSg8EYDgkrX+blkf24aSoQOhcfpJV2w6mVVr+r6anxuC0WzLtp25txoHF6cPEgSVriZXtmqCyHXHt5c1mnFgsrKabl0SYToFseOjdnFNeQuOtGoeRTOAcCUjGeqGfC6h8sxw6QC0hJsr6yjxTk8SHeqoRSpT4Y45hEbEW/0rDmyns/YjW5QbVvNdKVeOfwuZXEoVhxOO/laWwNJKnp+MzEqGPlbLtuPPARvDWzZiIGkBi9H+49eE2Lpgv5G+pdwBgniATVSguWXA==
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=J53yonuYZVZu770hzZqTKqVrQntZ/hs+ryzpihiODSg=; b=cMtCl2Gn73K5YW2YvQ6waLY71bnfh1d9TjhG+F0PobdcXPFUPOBkCd6e+kRQwb5/oKFjueEJMHN5vkdwttpw7k6jsM9F0fLm9MhyyentBvwkewqhcf1b2gMlryfL6EAWcImZpaDolbYxGUzdn7x99RcS5JWjnwlsplmgbcGJsAKTRyd6mA7MtrMPPb42GV7M3amwOMGWNXJgrhgdf7U0xMAQjUuNqyXfDA6ZidPDRD6JM5JL8TOXbxwLONmpURNSI0WgUk9pOo0PfGYWn3vWq127koPB3vuh+43uJKE3RYrgt883x90aGyHGMtE1k/KZD9tDvqwRViIXR/gfDPnncg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=uoguelph.ca; dmarc=pass action=none header.from=uoguelph.ca; dkim=pass header.d=uoguelph.ca; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=uoguelph.ca; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=J53yonuYZVZu770hzZqTKqVrQntZ/hs+ryzpihiODSg=; b=CqDiJXQ/1Wej6gSu5d+N7NoxeOVbThGHczu3e322ej7I/LbqIedbm+IdFcs2gbtMWrLWrHr3/iriPywBpOzLq9ijWlaMb9wRKPwySAmAaXDZFDotTRs7ob2EQF3S53HX5yRIyah4qGdk8w2vBLDtrCr7N7y0A6gBgasgd9SBF7KlfJxfZPBNlc9Mv4LsaSfyjtzalr+Ub16m3Lsdrje6MN1WSrwORTb1U9Gb9akj+n3YVoTpO4URHo39n6Q4YBPTDDcWIhX7wDwxlZl8XzdK5/2JsMRVa1AOmibY2nJ7dUUsW+4+TM6PWgGa5uF9HAHAeBfJ+hhjE5LYrqPmb9ZXhw==
Received: from YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:19::29) by QB1PR01MB2690.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:c00:39::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3676.25; Thu, 17 Dec 2020 23:58:43 +0000
Received: from YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM ([fe80::7d6b:aa68:78f4:5d94]) by YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM ([fe80::7d6b:aa68:78f4:5d94%7]) with mapi id 15.20.3654.025; Thu, 17 Dec 2020 23:58:42 +0000
From: Rick Macklem <rmacklem@uoguelph.ca>
To: Chuck Lever <chuck.lever@oracle.com>
CC: "nfsv4@ietf.org" <nfsv4@ietf.org>
Thread-Topic: [nfsv4] NFS over TLS for laptops
Thread-Index: AQHW0NppAc3uZqIjgEq2ArIQwELbLqn2yyYAgACS67yAAO+9eYAAHOsAgAN9Yts=
Date: Thu, 17 Dec 2020 23:58:42 +0000
Message-ID: <YQXPR0101MB09680BC1A27265F81C5B5671DDC40@YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM>
References: <YQXPR0101MB0968F7BF5A6D7E97F39CC739DDC90@YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM> <A7175D1C-BEBB-4557-8123-FA78C9393E72@oracle.com> <YQXPR0101MB096816C0EA985F65FE6562E5DDC60@YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM> <YQXPR0101MB0968AA3A97C80B8140BFC845DDC60@YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM>, <8B3A77F6-15DE-4F4B-B246-385DD447C743@oracle.com>
In-Reply-To: <8B3A77F6-15DE-4F4B-B246-385DD447C743@oracle.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: oracle.com; dkim=none (message not signed) header.d=none;oracle.com; dmarc=none action=none header.from=uoguelph.ca;
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 5f0047c3-675b-4823-e439-08d8a2e7aefa
x-ms-traffictypediagnostic: QB1PR01MB2690:
x-microsoft-antispam-prvs: <QB1PR01MB2690266101E963A4D1DB5636DDC40@QB1PR01MB2690.CANPRD01.PROD.OUTLOOK.COM>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: vl45mYLPpvLLEOhGUz62u56SuqAZWR4UCzt0y8+Mj9hDVrKlKLSTICzlXFTttzW3fB6zd2uefswLVh5p35eGIJiJypUiAJHpaQJ47QZwyCeHCsxzylnH9p3AlXcNwDtAGCTgoTVRaz1hwOz6+T/7qK/1D65W4Nk8UegFXsugWY5xSkucEhq1sDH5gwMZ33y+IwFzORQYDKTNz5XtjBuSFf5rgwxmnJDA/WgFDUz1j9dNtIZm8/d2WQaTugKXAgYRavB5orxZi8Kqco1LLgiIGcKGa1zbbOJWNJ2Bm/KFCcFpm7j3aAm9LYY7ar1t9bRgvRwjTAgdT/JBzp3wXFWRisSzAsGg42Bhh+jOXjjnkzG9Qa4DfOiejig7hZlbpum8mNS0DcBpXO9YPHRY1ZY1hAd/+Sb87HFQgO5z7lyuRQtO5cr9weSnzOg6LqT/nhakF8bpcskc7Yi3f9zUcLZp0B0UP1+11dz5iA6LNgj3X7SC2NeePmHN6xvzc5JH3pXZZxUe6g8CiJqXW8JbzIjZZA==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(136003)(39860400002)(346002)(366004)(396003)(376002)(86362001)(7696005)(71200400001)(186003)(4326008)(6506007)(33656002)(52536014)(30864003)(8936002)(5660300002)(478600001)(66476007)(66446008)(91956017)(76116006)(66556008)(19627235002)(6916009)(2906002)(316002)(83380400001)(8676002)(55016002)(9686003)(786003)(966005)(64756008)(66946007)(21314003); DIR:OUT; SFP:1101;
x-ms-exchange-antispam-messagedata: LCE2bW1VcJoiTAPCU+OLcEHi3BL2Rhl+ImSOSdnvz9CnbezLf24PADtqNhpFatlWyDKRGy1FJMNqoC6To8gjxWX+A/fACV3AowSMupMG9RW2qPw3ROww18V3uj66pZWHdK97eYx9b3CWkaJdW4+ZFTlFMuDaoaCVFbbl/70uASP3te0u8u20Qt7RUMAayXRL542M20+79UWDeAFGMjcgPKljfZYM8yNvgCIx3a4lyDwpbbHTswfKuwz/If6s7jE/QYDqBx2dGlrMh+JR84GukBQVhjcIuZFBwOvUszGlvu3xHd4IMZoYOuRG8s7iflav82ubKBC+wgsrco7yHV8WyegceqFHn7mLIDzMlybz2kDpXFLMP+R5tJT4MbWXafaz9k3axzAUaltpBTc0H19L9Ph9lrfrFP9yrdUe8gYx8hbeTt6u6zXNewvDA6V6mIONtE/P2xmNM3VklvN0U6s/8NG7AnehBex4CMDj78xMy/EztcLrJI29HTy/rk/knGmjwlAPPUUgsth88i/t1yK1mwBvChB4dL2sKJuSNFutOVkp4P0RBcTE6EtkbNKLOrG4IirsoCHngrhq4KT8ZDLVgr6msip4jc/7+dITXDS/4Fqbzg4twLalw0vUWwrut1022sglSpdGs1X9yVV9DP/uwmdTo6xGEzOWAIskFjRAlxd1hc2BJkY/EMgAxbWdAv3TP/yjKSCUmTJRHgkKwT38uwtoAZNdhhVkrzQVKncPiuv16T2hK7cBORQzHbiImLUzN6FJQ3IK7wBJ2t7/UsvITYQkXa0ixMKYDGLnNJXeBSEJcZRuNngJUQUUvu77Bdp9zr+tP2GH4gEyLSsFZx7wAKrmN9cQkJmNHkZHZleo6+vrkU/RMEWhCTA6xuGozAjVUOcIh1vaYSgbzDkjlbZV9nKXsHHg2kWuT7X2tL7LD3qbsuwUjvj5ay3mKDQT3M4UCAIyZdkdSyP47aUYMOe14tMDLI4/x3GKXgjdebYhp7qCemeiwie7nxu1A8iFLXft6gBCWbzIP1JQgBo1kE/sljwM79Pa3iHtKDOq1c5uwD0=
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: uoguelph.ca
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: YQXPR0101MB0968.CANPRD01.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: 5f0047c3-675b-4823-e439-08d8a2e7aefa
X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Dec 2020 23:58:42.9298 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: be62a12b-2cad-49a1-a5fa-85f4f3156a7d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: kIyN+vmCJ6X4oqdHM+h95ttMxos5GTeAIbw3J+S/SrOROKexrytDhNMxj4mxaYUcJ+/Rj0HsYmKEwgjyPW8f7Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: QB1PR01MB2690
Archived-At: <https://mailarchive.ietf.org/arch/msg/nfsv4/KiNsX67I4gGk0bBL6Uh6y3JXg5A>
Subject: Re: [nfsv4] NFS over TLS for laptops
X-BeenThere: nfsv4@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NFSv4 Working Group <nfsv4.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/nfsv4/>
List-Post: <mailto:nfsv4@ietf.org>
List-Help: <mailto:nfsv4-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nfsv4>, <mailto:nfsv4-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 17 Dec 2020 23:58:47 -0000

Chuck Lever wrote:
>Rick Macklem wrote:
>> Yes. My understanding is that the tuple <issuerName, subjectName>
>> should be uniquely assigned to a certificate.
>> As such, an NFS server admin. could maintain a database keyed on that
>> tuple, which could be used to constrain access in a manner analogous
>> to an exports file, but for TLS clients that present certificates during TLS
>> handshake.
>> --> I think this would be more effort to implement and, more importantly,
>>       more effort for a NFS server admin. to maintain.
>>       --> What I implemented simply uses the user database that
>>              will normally already exist and the same technique as the gssd
>>              already uses for Kerberos user principals.
>
>At least for the server implementations I'm familiar with,
>I don't see much difference between the current GSS cases and
>needing to add server-side per-user information to deal with
>TLS identity squashing.
Note that, for Kerberos, that the principal name is in the Kerberos
ticket, which is in the token generated by gss_init_sec_context() and
passed to the server.

Also, as an aside, we know that many sites do not use Kerberos.
We probably do not know why, but I suspect that "Administrative
Hassle" is a significant factor.

Here's a certificate I use for testing. (Note that rick.home is not a real
DNS domain, but just what I use for my systems sitting behind a NAT
gateway.)
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 2 (0x2)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = CA, ST = Alberta, L = Jasper, O = MMM, OU = XXX, CN = democa.home.rick, emailAddress = rmacklem@uoguelph.ca
        Validity
            Not Before: Dec 17 05:08:33 2020 GMT
            Not After : Dec 17 05:08:33 2021 GMT
        Subject: C = CA, ST = Alberta, O = MMM, OU = XXX, CN = nfsv4new3.home.rick, emailAddress = rmacklem@uoguelph.ca
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:b4...
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                25:80:CA:0F:CD:13:23:4B:5D:57:3D:7E:AF:8C:AE:E9:78:36:4C:84
            X509v3 Authority Key Identifier: 
                38:92:2D:6C:DC:83:1B:37:6F:C0:9C:8C:FE:D8:54:76:91:F6:BC:70
            X509v3 Subject Alternative Name: 
                othername: 1.3.6.1.4.1.2238.1.1.1::ricktst@home.rick

Now, could you get away with using only the CN field as a key for your
TLS squashing database? Well, maybe, but what if there were multiple
OUs generating certificates?
--> I think it is safer to use the whole subjectName. We can use the
    "oneline" format that OpenSSL can use.
/C=CA/ST=Alberta/O=MMM/OU=XXX/CN=nfsv4-new3.home.rick/emailAddress=rmacklem@uoguelph.ca

there should also be an issuerName in the key, so it end up looking
something like:
/C=CA/ST=Alberta/O=MMM/OU=XXX/CN=democa.home.rick/emailAddress=rmacklem@uoguelph.ca
/C=CA/ST=Alberta/O=MMM/OU=XXX/CN=nfsv4new3.home.rick/emailAddress=rmacklem@uoguelph.ca

and the above key refers to ricktst@home.rick

So, all think all of the above needs tp be entered  in the database for each
certificate where TLS squashing is done, if there is no otherName field.

Seems like "Administrative Hassle" to me, especially if the NFS server
admin is not also the person generating the CSRs for certificates.

But, if the otherName field is done as it is for the above certificate,
the information (ie ricktst@home.rick) is right in the certificate.
--> No database needed.

> The tooling might be a little different,
>but in both cases we are adding a user mapping mechanism, and
>that means updating a database or directory somewhere.
When the information is in the cert., no database nor directory
is needed. Only the person generating the CSR for certificates
needs to know about the mapping info.
--> Press the Easy Button.

>So I think we agree that AUTH_SYS with TLS has a significant
>weakness that leaves NFS-served data content vulnerable if a
>client cert is stolen. Thank you for pointing that out!
Yes.

>We likely disagree on whether the client cert should present
>the squashed user identity, or whether the server should be
>responsible for mapping operations for that user based on a
>trusted user mapping database (eg, KDC or LDAP).
Well, as I tried to show above, putting "ricktst@home.rick" in
the certificate avoids a lot of "Administrative Hassle" and I
think that is important to encourage adoption.

As for what the server chooses to do with "ricktst@home.rick"?
That is up to the server implementation, just as it currently is
for Kerberos principal names.

>Server implementations have had user identity mapping and
>squashing capabilities for a very long time, so the latter
>approach feels more natural to me.
Done based upon client IP address/DNS name traditionally.

If it makes you more comfortable, you can consider
"ricktst@home.rick" as the client machine's name,
because it has no fixed IP address/DNS name and
then the server chooses to do squashing based on that.

>Further, the server already has to know a priori how to map
>user@domain to a UID whether or not it supports RPC-over-TLS.
Exactly. Again "Hit the Easy Button".
--> The NFS server could choose some entirely different mapping
      for the client's name of ricktst@home.rick, but the above
      mapping is the easy/obvious one.

>Otherwise the server has to squash an unknown identity to
>something anonymous like nobody.
Refusing to allow access would be preferable to "nobody"
access when there is no good TLS squashing mapping for
ricktst@home.rick I think.

>Is there another benefit to an otherName vs. a server-side
>mapping approach that I'm missing?
Both are server-side mappings.
All the otherName case I've done does is simplify the mapping
mechanism. (It basically puts the "principal" name in the certificate,
analogous to the "principal" name that is in the Kerberos ticket.)

>>> - For NFSv4, there's a separate authentication for SETCLIENTID /
>>> EXCHANGE_ID, which must present consistent authentication material
>>> across client reboots. Usually that's the client's root user,
>>> though that could also be rmacklem in this case. Which is your
>>>implementation doing?
>> rmacklem. The FreeBSD server implementation will optionally not allow
>> non-NULL RPCs to be done from a client without TLS being enabled on
>> the TCP connection and that option would always be used for this case.
>> --> All compounds, including the EXCHANGE_ID etc will be done as the
>>      squashed user.
>> Btw, although not widely adopted as far as I am aware, FreeBSD does allow the
>> NFSv4 client mount to be done using Kerberos, but where all RPCs including
>> EXCHANGE_ID etc use the Kerberos user principal's TGT, avoiding the
>> need for a host based credential in a keytab on the client.
>> --> rmacklem would do EXCHANGE_ID etc for this case as well.
>
>Sure, just as long as the same "principal" is presented to the
>server when the client needs to recover its lease state, that
>should work fine.
>
>>> This is an area that might be tackled by
>>> an NFSv4-on-TLS document that can in fact require that an NFS
>>> server map the client's identity to a particular lease.
>> Not sure what you mean here?
>> My understanding of the NFSv4 RFCs is that the same user that does
>> the EXCHANGE_ID/SET_CLIENT_ID must be used for the others like
>> DESTROY_CLIENTID/RENEW.
>>
>> --> For 4.0 there is Renew, but for 4.1/4.2 anyone doing Sequence is
>>       sufficient. Were you thinking of Renew for 4.0?
>
>So I was thinking of enabling a server to use the client cert instead
>of the GSS or AUTH_SYS RPC credentials for authenticating all of
>these operations.
>
>Dave Noveck suggested we might add this to the EXCHANGE_ID operation
>as a new state_protect_4a value, or simply some additional language
>in RFC 5661bis explaining how to use the client certificate with an
>existing state_protect_4a value.
Why would the client need to present the certificate again, after TLS
handshake?
If the NFS server applies the following rule for the client:
- All non-Null RPCs must be done within a TLS session.
Then any certificate that verifies and was presented during the TLS
handshake for that session can be used to authenticate these operations.
(ie I do not see a need for the client to resend the certificate.)
--> Again, I think that a name like ricktst@home.rick from the otherName
      would be easier to manage than the entire issuerName/subjectName,
      but either would work, I think?

To be honest, it should be very hard for a malicious
client (or malicious user on a legitimate client) to generate/inject 
a bogus RPC into an established TLS session/TCP stream.
--> If the client is required to present a certificate that verifies during
       TLS handshake, the malicious case will need access to that
      certificate.
      --> If the malicious client has a certificate, it can send it to the
             server whenever it likes, so sending it again during
             EXCHANGE_ID is not going to help, I think?

>More discussion is needed here.
Yes, as above.

Hopefully others will chime in w.r.t all this stuff, rick


>> In addition:
>>
>> Is TLS identity squashing going to cause interoperability problems
>> or loss of security in environments that don't support it?
> I suppose there might be confusion caused by one server doing
> all RPCs as "rmacklem" and another doing the RPC as whatever
> uid is in the AUTH_SYS RPC authenticator.
> -->This would be no more so than different servers having different
>      squashing rules in their exports file.
>
> If an NFS server chooses to trust the client's identity due to its
> presentation of a verifiable certificate but not its IP address/DNS name
> then, without TLS squashing, a stolen client certificate could provide
> cart blanche access to the server (assuming AUTH_SYS).
> This would result in weaker security than with "TLS squashing" and
> also weaker that if the client uses RPCSEC_GSS/Kerberos.

Agreed.


>> What is our thinking about how certificates might be used to handle
>> RPC user authentication?
> --> I posted about this once before and, in my opinion, using more than
>      one certificate per TLS session/TCP connection is not practical.
>      To do so, something like RPCSEC_GSS with X509 mechanism
>       would need to be implemented. The client would need to have
>       a database of certificates for different users. A compromised
>       client system would compromise all those users, etc and so on.
>       --> For this we have Kerberos and it works. Doing RPCSEC_GSS
>             with X509 mechanism would require a lot of implementation work
>             and the result would be less secure and as much effort to manage
>             as using Kerberos, I think.

Agreed, IIRC that was the consensus a year ago.


> --> For a small number of different users (I would be concerned with
>      scaling this to a large numbesr of users), they can simply use
>      separate TLS sessions/TCP connections. Each of these could
>      present a different client certificate during TLS handshake and
>      then "TLS squashing" can be applied to each of them, squashed
>      to the appropriate user.
>
>> Will TLS identity squashing conflict with that future?
> As above, I think "TLS squashing" would be an appropriate
> mechanism for this.
>
> rick
> ps: If anyone is interested in the various options I have implemented, you can
>     look at https://people.freebsd.org/~rmacklem/nfs-over-tls-setup.txt

Thank you Rick, I'll take a look.

--
Chuck Lever