4.12. 配置支持 mutual TLS 的 NFS 客户端
如果服务器支持带有 TLS 加密的 NFS,您可以配置 NFS 服务器和客户端,以使用 TLS 协议相互验证。
先决条件
- 您已使用 TLS 加密配置了 NFS 服务器。详情请参阅 配置支持 TLS 的 NFS 服务器。
-
已安装
ktls-utils
软件包。
流程
创建私钥和证书签名请求(CSR):
openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/client.example.com.key \ -out /etc/pki/tls/private/client.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=client.example.com" \ -addext "subjectAltName=DNS:client.example.com,IP:192.0.2.2"
# openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/client.example.com.key \ -out /etc/pki/tls/private/client.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=client.example.com" \ -addext "subjectAltName=DNS:client.example.com,IP:192.0.2.2"
Copy to Clipboard Copied! 重要通用名称(CN)和 DNS 必须与主机名匹配。IP 必须与主机的 IP 匹配。
-
将
/etc/pki/tls/private/client.example.com.csr
文件发送到证书颁发机构(CA)并请求客户端证书。将收到的 CA 证书和客户端证书存储在主机上。 将 CA 证书导入到系统的信任存储中:
cp ca.crt /etc/pki/ca-trust/source/anchors update-ca-trust
# cp ca.crt /etc/pki/ca-trust/source/anchors # update-ca-trust
Copy to Clipboard Copied! 将客户端证书移到
/etc/pki/tls/certs/
目录中:mv client.example.com.crt /etc/pki/tls/certs/
# mv client.example.com.crt /etc/pki/tls/certs/
Copy to Clipboard Copied! 确保 SELinux 上下文在私钥和证书上正确:
restorecon -Rv /etc/pki/tls/certs/
# restorecon -Rv /etc/pki/tls/certs/
Copy to Clipboard Copied! 将客户端证书和私钥添加到
/etc/tlshd.conf
文件的[authenticate.client]
部分:x509.certificate= /etc/pki/tls/certs/client.example.com.crt x509.private_key= /etc/pki/tls/private/client.example.com.key
x509.certificate= /etc/pki/tls/certs/client.example.com.crt x509.private_key= /etc/pki/tls/private/client.example.com.key
Copy to Clipboard Copied! 保留
x509.truststore
参数未设置。启用并启动
tlshd
服务:systemctl enable --now tlshd.service
# systemctl enable --now tlshd.service
Copy to Clipboard Copied! 使用 TLS 加密挂载 NFS 共享:
mount -o xprtsec=mtls server.example.com:/nfs/projects/ /mnt/
# mount -o xprtsec=mtls server.example.com:/nfs/projects/ /mnt/
Copy to Clipboard Copied!
验证
验证客户端是否成功挂载了带有 TLS 支持的 NFS 共享:
journalctl -u tlshd
# journalctl -u tlshd … Apr 01 08:37:56 client.example.com tlshd[10688]: Handshake with server.example.com (192.0.2.1) was successful
Copy to Clipboard Copied!