

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 加密传输中数据
<a name="encryption-in-transit"></a>

Amazon EFS 支持使用传输层安全性协议（TLS）对传输中数据进行加密。在将传输中数据加密声明为 EFS 文件系统的挂载选项时，Amazon EFS 会在挂载文件系统时与您的 EFS 文件系统建立安全的 TLS 连接。所有 NFS 流量都通过此加密连接进行路由。

## 传输中加密的工作方式
<a name="how-encrypt-transit"></a>

我们建议使用 EFS 挂载帮助程序来挂载您的文件系统，因为与使用 NFS `mount` 挂载相比，它简化了挂载过程。EFS 挂载帮助程序通过使用 efs-proxy（适用于 efs-utils 版本 2.0.0 及更高版本）或 stunnel（适用于 efs-utils 的早期版本）来管理该进程，从而与 EFS 文件系统建立安全的 TLS 连接。

如果未使用挂载帮助程序，您仍然可以启用传输中的数据加密。请按以下步骤操作。

**在不使用挂载帮助程序的情况下对传输中数据进行加密**

1. 下载并安装 `stunnel`，并记下该应用程序侦听的端口。有关更多信息，请参阅 [升级 `stunnel`](upgrading-stunnel.md)。

1. 运行 `stunnel` 以使用 TLS 通过端口 2049 连接到您的 EFS 文件系统。

1. 使用 NFS 客户端挂载 `localhost:port`，其中 `port` 是在第一步中记下的端口。

由于传输中的数据加密是根据每个连接配置的，因此，每个配置的挂载在实例上运行专用的 `stunnel` 进程。默认情况下，挂载帮助程序使用的 stunnel 进程会侦听 20049 和 20449 之间的本地端口，并通过端口 2049 连接到 Amazon EFS。

**注意**  
默认情况下，在将 EFS 挂载帮助程序与 TLS 一起使用时，它会强制使用在线证书状态协议（OCSP）和证书主机名检查。EFS 挂载帮助程序使用 stunnel 程序提供 TLS 功能。某些版本的 Linux 不包含默认支持这些 TLS 功能的 stunnel 版本。在使用这些 Linux 版本之一时，使用 TLS 挂载 EFS 文件系统将失败。  
安装 amazon-efs-utils软件包后，要升级系统的 stunnel 版本，请参阅[升级 `stunnel`](upgrading-stunnel.md)。  
 有关加密问题，请参阅[排除加密故障](troubleshooting-efs-encryption.md)。

在使用传输中的数据加密时，将更改您的 NFS 客户端设置。在检查您主动挂载的文件系统时，将会看到一个文件系统挂载到 127.0.0.1 或 `localhost`，如以下示例中所示。

```
$ mount | column -t
127.0.0.1:/  on  /home/ec2-user/efs        type  nfs4         (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=20127,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)
```

在使用 TLS 和 EFS 挂载帮助程序进行挂载时，将重新配置 NFS 客户端以挂载到本地端口。EFS 挂载帮助程序启动一个客户端 `stunnel` 进程以侦听该本地端口，并且 `stunnel` 使用 TLS 打开到 EFS 文件系统的加密连接。EFS 挂载帮助程序负责设置和维护该加密连接和关联的配置。

要确定哪个 Amazon EFS 文件系统 ID 对应于哪个本地挂载点，您可以使用以下命令。请记住*efs-mount-point*替换为挂载文件系统的本地路径。

```
grep -E "Successfully mounted.*efs-mount-point" /var/log/amazon/efs/mount.log | tail -1
```

在将 EFS 挂载帮助程序用于传输中数据加密时，它还会创建一个名为 `amazon-efs-mount-watchdog` 的进程。该进程可确保每个挂载的 stunnel 进程正在运行，并在卸载 EFS 文件系统后停止 stunnel。如果 stunnel 进程由于某种原因意外终止，watchdog 进程将重新启动该进程。