NFS: Add an "xprtsec=" NFS mount option
authorChuck Lever <chuck.lever@oracle.com>
Wed, 7 Jun 2023 14:00:09 +0000 (10:00 -0400)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Mon, 19 Jun 2023 16:30:17 +0000 (12:30 -0400)
commitc8407f2e560c53c4c73e77cb5604c8a408dbe7f7
treef695d4a7ccdf9a62a0cd57a73e6e4303c53a23e5
parent6c0a8c5fcf7158e889dbdd077f67c81984704710
NFS: Add an "xprtsec=" NFS mount option

After some discussion, we decided that controlling transport layer
security policy should be separate from the setting for the user
authentication flavor. To accomplish this, add a new NFS mount
option to select a transport layer security policy for RPC
operations associated with the mount point.

  xprtsec=none     - Transport layer security is forced off.

  xprtsec=tls      - Establish an encryption-only TLS session. If
                     the initial handshake fails, the mount fails.
                     If TLS is not available on a reconnect, drop
                     the connection and try again.

  xprtsec=mtls     - Both sides authenticate and an encrypted
                     session is created. If the initial handshake
                     fails, the mount fails. If TLS is not available
                     on a reconnect, drop the connection and try
                     again.

To support client peer authentication (mtls), the handshake daemon
will have configurable default authentication material (certificate
or pre-shared key). In the future, mount options can be added that
can provide this material on a per-mount basis.

Updates to mount.nfs (to support xprtsec=auto) and nfs(5) will be
sent under separate cover.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
fs/nfs/client.c
fs/nfs/fs_context.c
fs/nfs/internal.h
fs/nfs/nfs3client.c
fs/nfs/nfs4client.c
fs/nfs/super.c