

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

# 了解传输中加密
<a name="emr-encryption-support-matrix"></a>

您可以配置 EMR 集群来运行 [Apache Spark](https://www.amazonaws.cn/emr/features/spark/)、[Apache Hive](https://www.amazonaws.cn/emr/features/hive/) 和 [Presto](https://www.amazonaws.cn/emr/features/presto/) 等开源框架。这些开源框架各有一组在集群的 EC2 实例上运行的进程。这些进程中的每一个都可以托管用于网络通信的网络端点。

如果在 EMR 集群上启用了传输中加密，不同的网络端点将使用不同的加密机制。请参阅以下部分，了解有关传输中加密支持的特定开源框架网络端点、相关加密机制以及哪个 Amazon EMR 发行版添加了该支持的更多信息。每个开源应用程序还可能有不同的最佳实践和您可以更改的开源框架配置。

 为了获得最大的传输中加密覆盖范围，我们建议您同时启用传输中加密和 Kerberos。如果您仅启用传输中加密，则传输中加密仅适用于支持 TLS 的网络端点。之所以需要 Kerberos，是因为某些开源框架网络端点使用简单身份验证和安全层（SASL）进行传输中加密。

请注意，不包括 Amazon EMR 7.x.x 发行版中不支持的任何开源框架。

## Spark
<a name="emr-encryption-support-matrix-spark"></a>

在安全配置中启用传输中加密时，`spark.authenticate` 会自动设置为 `true` 并对 RPC 连接使用基于 AES 的加密。

从 Amazon EMR 7.3.0 开始，如果使用传输中加密和 Kerberos 身份验证，则无法使用依赖于 Hive 元存储的 Spark 应用程序。Hive 3 在 [HIVE-16340](https://issues.apache.org/jira/browse/HIVE-16340) 中修复了此问题。当开源 Spark 可以升级到 Hive 3 时，[HIVE-44114](https://issues.apache.org/jira/browse/SPARK-44114) 可完全解决此问题。同时，您可以将 `hive.metastore.use.SSL` 设置为 `false` 以解决此问题。有关更多信息，请参阅[配置应用程序](https://docs.amazonaws.cn/emr/latest/ReleaseGuide/emr-configure-apps.html)。

有关更多信息，请参阅 Apache Spark 文档中的 [Spark 安全性](https://spark.apache.org/docs/latest/security)。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| Spark 历史记录服务器 | ssl.history.port | 18480 | TLS | emr-5.3.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| 火花用户界面 | spark.ui.port | 4440 | TLS | emr-5.3.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| Spark 驱动程序 | spark.driver.port | 动态 | Spark AES 加密 | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| Spark 执行程序 | 执行程序端口（无命名配置） | 动态 | Spark AES 加密 | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| 纱线 NodeManager | spark.shuffle.service.port1 | 7337 | Spark AES 加密 | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 

1 托管`spark.shuffle.service.port`在 YARN 上 NodeManager ，但只有 Apache Spark 使用。

**已知问题**

在启用传输的集群上，`spark.yarn.historyServer.address` 配置当前正在使用端口 `18080`，这会阻止使用 YARN 跟踪 URL 访问 Spark 应用程序 UI。**影响版本：**EMR - 7.3.0 到 EMR - 7.9.0。

使用以下解决方法：

1. 修改 `/etc/spark/conf/spark-defaults.conf` 中的 `spark.yarn.historyServer.address` 配置以在正在运行的集群上使用 `HTTPS` 端口号 `18480`。

1. 这也可以在启动集群时在配置覆盖中提供。

示例配置：

```
[
                               {
                                 "Classification": "spark-defaults",
                                 "Properties": {
                                     "spark.yarn.historyServer.address": "${hadoopconf-yarn.resourcemanager.hostname}:18480"
                                 }
                               }
  
                               ]
```

## Hadoop YARN
<a name="emr-encryption-support-matrix-hadoop-yarn"></a>

[Secure Hadoop RPC](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_RPC) 设置为 `privacy`，使用基于 SASL 的传输中加密。这需要在安全配置中启用 Kerberos 身份验证。如果不想对 Hadoop RPC 进行传输中加密，请配置 `hadoop.rpc.protection = authentication`。建议使用默认配置，以获得最大的安全性。

如果 TLS 证书不符合 TLS 主机名验证要求，则可以配置 `hadoop.ssl.hostname.verifier = ALLOW_ALL`。建议使用 `hadoop.ssl.hostname.verifier = DEFAULT` 的默认配置，即强制执行 TLS 主机名验证。

要禁用 YARN Web 应用程序端点的 HTTPS，请配置 `yarn.http.policy = HTTP_ONLY`。这样，这些端点的流量就不会加密。建议使用默认配置，以获得最大的安全性。

有关更多信息，请参阅 Apache Hadoop 文档中的 [Hadoop in secure mode](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html)（安全模式下的 Hadoop）。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| ResourceManager | yarn.resourcemanager.webapp.address | 8088 | TLS | emr-7.3.0\+ | 
| ResourceManager | yarn.resourcemanager.resource-tracker.address | 8025 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| ResourceManager | yarn.resourcemanager.scheduler.address | 8030 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| ResourceManager | yarn.resourcemanager.address | 8032 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| ResourceManager | yarn.resourcemanager.admin.address | 8033 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| TimelineServer | yarn.timeline-service.address | 10200 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| TimelineServer | yarn.timeline-service.webapp.address | 8188 | TLS | emr-7.3.0\+ | 
| WebApplicationProxy | yarn.web-proxy.address | 20888 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| NodeManager | yarn.nodemanager.address | 8041 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| NodeManager | yarn.nodemanager.localizer.address | 8040 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| NodeManager | yarn.nodemanager.webapp.address | 8044 | TLS | emr-7.3.0\+ | 
| NodeManager | mapreduce.shuffle.port1 | 13562 | TLS | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| NodeManager | spark.shuffle.service.port2 | 7337 | Spark AES 加密 | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 

1 托管`mapreduce.shuffle.port`在 YARN 上 NodeManager ，但只有 Hadoop MapReduce 使用。

2 托管`spark.shuffle.service.port`在 YARN 上 NodeManager ，但只有 Apache Spark 使用。

**已知问题**

`yarn.log.server.url` 配置当前使用 HTTP 和端口 19888，这阻止了从资源管理器 UI 访问应用程序日志。**影响版本：**EMR - 7.3.0 到 EMR - 7.8.0。

使用以下解决方法：

1. 修改 `yarn-site.xml` 中的 `yarn.log.server.url` 配置以使用 `HTTPS` 协议和端口号 `19890`。

1. 重启 YARN 资源管理器：`sudo systemctl restart hadoop-yarn-resourcemanager.service`。

## Hadoop HDFS
<a name="emr-encryption-support-matrix-hadoop-hdfs"></a>

如果在 EMR 集群中启用了传输中加密，Hadoop 名称节点、数据节点和日志节点默认都支持 TLS。

[Secure Hadoop RPC](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_RPC) 设置为 `privacy`，使用基于 SASL 的传输中加密。这需要在安全配置中启用 Kerberos 身份验证。

建议保留用于 HTTPS 端点的默认端口。

[HDFS 块传输的数据加密使用](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_Block_data_transfer.) AES 256，要求在安全配置中启用静态加密。

有关更多信息，请参阅 Apache Hadoop 文档中的 [Hadoop in secure mode](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html)（安全模式下的 Hadoop）。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| Namenode | dfs.namenode.https-address | 9871 | TLS | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| Namenode | dfs.namenode.rpc-address | 8020 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| Datanode | dfs.datanode.https.address | 9865 | TLS | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| Datanode | dfs.datanode.address | 9866 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| Journal Node | dfs.journalnode.https-address | 8481 | TLS | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| Journal Node | dfs.journalnode.rpc-address | 8485 | SASL \+ Kerberos | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| DFSZKFailover控制器 | dfs.ha.zkfc.port | 8019 | 无 | 只有 Hadoop 3.4.0 支持 TLS for ZKFC。有关更多信息，请参阅 [HADOOP-18919](https://issues.apache.org/jira/browse/HADOOP-18919)。Amazon EMR 7.1.0 目前在 Hadoop 3.3.6 上运行。未来将在 Hadoop 3.4.0 上运行的更高 Amazon EMR 版本 | 

## Hadoop MapReduce
<a name="emr-encryption-support-matrix-hadoop-mapreduce"></a>

在 EMR 集群中启用传输加密时 MapReduce，Hadoop、任务历史服务器和 sh MapReduce uffle 默认都支持 TLS。

[Hadoop MapReduce 加密的随机播放使用](https://hadoop.apache.org/docs/r2.7.1/hadoop-mapreduce-client/hadoop-mapreduce-client-core/EncryptedShuffle.html) TLS。

建议保留用于 HTTPS 端点的默认端口。

有关更多信息，请参阅 Apache Hadoop 文档中的 [Hadoop in secure mode](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html)（安全模式下的 Hadoop）。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| JobHistoryServer | mapreduce.jobhistory.webapp.https.address | 19890 | TLS | emr-7.3.0\+ | 
| 纱线 NodeManager | mapreduce.shuffle.port1 | 13562 | TLS | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+、emr-7.0.0\+ | 

1 托管`mapreduce.shuffle.port`在 YARN 上 NodeManager ，但只有 Hadoop MapReduce 使用。

## ：Presto
<a name="emr-encryption-support-matrix-presto"></a>

在 Amazon EMR 5.6.0 及更高版本中，Presto 协调器和工作线程之间的内部通信使用 TLS，Amazon EMR 会设置所有必需的配置，以便在 Presto 中启用[安全内部通信](https://prestodb.io/docs/current/security/internal-communication.html)。

如果连接器使用 Hive 元存储作为元数据存储，则通信器与 Hive 元存储之间的通信也使用 TLS 加密。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| Presto Coordinator | http-server.https.port | 8446 | TLS | emr-5.6.0\+、emr-6.0.0\+、emr-7.0.0\+ | 
| Presto Worker | http-server.https.port | 8446 | TLS | emr-5.6.0\+、emr-6.0.0\+、emr-7.0.0\+ | 

## Trino
<a name="emr-encryption-support-matrix-trino"></a>

在 Amazon EMR 6.1.0 及更高版本中，Presto 协调器和工作线程之间的内部通信使用 TLS，Amazon EMR 会设置所有必需的配置，以便在 Presto 中启用[安全内部通信](https://trino.io/docs/current/security/internal-communication.html)。

如果连接器使用 Hive 元存储作为元数据存储，则通信器与 Hive 元存储之间的通信也使用 TLS 加密。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| Trino Coordinator | http-server.https.port | 8446 | TLS | emr-6.1.0\+、emr-7.0.0\+ | 
| Trino Worker | http-server.https.port | 8446 | TLS | emr-6.1.0\+、emr-7.0.0\+ | 

## Hive 和 Tez
<a name="emr-encryption-support-matrix-hive-tez"></a>

默认情况下，在 EMR 集群中启用传输中加密时，Hive 服务器 2、Hive 元存储服务器、Hive LLAP Daemon Web UI 和 Hive LLAP shuffle 都支持 TLS。有关 Hive 配置的更多信息，请参阅[配置属性](https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties)。

当 EMR 集群启用传输中加密时，Tomcat 服务器上托管的 Tez UI 也会启用 HTTPS。但是，Tez AM Web UI 服务禁用了 HTTPS，因此 AM 用户无权访问打开的 SSL 侦听器的密钥库文件。您还可以使用布尔配置 `tez.am.tez-ui.webservice.enable.ssl` 和 `tez.am.tez-ui.webservice.enable.client.auth` 来启用此行为。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| HiveServer2 | hive.server2.thrift.port | 10000 | TLS | emr-6.9.0\+、emr-7.0.0\+ | 
| HiveServer2 | hive.server2.thrift.http.port | 10001 | TLS | emr-6.9.0\+、emr-7.0.0\+ | 
| HiveServer2 | hive.server2.webui.port | 10002 | TLS | emr-7.3.0\+ | 
| HiveMetastoreServer | hive.metastore.port | 9083 | TLS | emr-7.3.0\+ | 
| LLAP Daemon | hive.llap.daemon.yarn.shuffle.port | 15551 | TLS | emr-7.3.0\+ | 
| LLAP Daemon | hive.llap.daemon.web.port | 15002 | TLS | emr-7.3.0\+ | 
| LLAP Daemon | hive.llap.daemon.output.service.port | 15003 | 无 | Hive 不支持此端点的传输中加密 | 
| LLAP Daemon | hive.llap.management.rpc.port | 15004 | 无 | Hive 不支持此端点的传输中加密 | 
| LLAP Daemon | hive.llap.plugin.rpc.port | 动态 | 无 | Hive 不支持此端点的传输中加密 | 
| LLAP Daemon | hive.llap.daemon.rpc.port | 动态 | 无 | Hive 不支持此端点的传输中加密 | 
| 网页 HCat | templeton.port | 50111 | TLS | emr-7.3.0\+ | 
| Tez Application Master | tez.am.client.am.port-range<br />tez.am.task.am.port-range | 动态 | 无 | Tez 不支持此端点的传输中加密 | 
| Tez Application Master | tez.am.tez-ui.webservice.port-range | 动态 | 无 | 默认情况下禁用。可使用 emr-7.3.0\+ 中的 Tez 配置启用 | 
| Tez Task | 不适用：不可配置 | 动态 | 无 | Tez 不支持此端点的传输中加密 | 
| Tez UI | 可通过托管 Tez UI 的 Tomcat 服务器来配置 | 8080 | TLS | emr-7.3.0\+ | 

## Flink
<a name="emr-encryption-support-matrix-flink"></a>

 在 EMR 集群中启用传输中加密时，Apache Flink REST 端点和 Flink 进程之间的内部通信默认支持 TLS。

 [https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-internal-enabled](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-internal-enabled) 设置为 `true`，对 Flink 进程之间的内部通信使用传输中加密。如果不想在内部通信中使用传输中加密，请禁用该配置。建议使用默认配置，以获得最大的安全性。

 Amazon EMR 将 [https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-rest-enabled](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-rest-enabled) 设置为 `true`，并对 REST 端点使用传输中加密。此外，Amazon EMR 还将 [https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#historyserver-web-ssl-enabled](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#historyserver-web-ssl-enabled) 设置为 true，以便与 Flink History Server 进行 TLS 通信。如果不想对 REST 点进行传输中加密，请禁用这些配置。建议使用默认配置，以获得最大的安全性。

Amazon EMR 使用 [https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-algorithms](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/#security-ssl-algorithms) 来指定使用基于 AES 加密的密码列表。覆盖此配置以使用所需的密码。

有关更多信息，请参阅 Flink 文档中的 [SSL 设置](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/security/security-ssl/)。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| Flink History Server | historyserver.web.port | 8082 | TLS | emr-7.3.0\+ | 
| Job Manager Rest Server | rest.bind-port<br />rest.port | 动态 | TLS | emr-7.3.0\+ | 

## HBase
<a name="emr-encryption-support-matrix-hbase"></a>

 亚马逊 EMR 将 S [ecure Hadoop](https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/SecureMode.html#Data_Encryption_on_RPC) RPC 设置为。`privacy` HMaster 并 RegionServer 使用基于 SASL 的传输中加密。这需要在安全配置中启用 Kerberos 身份验证。

Amazon EMR 将 `hbase.ssl.enabled` 设置为 true，对 UI 端点使用 TLS。如果您不想对 UI 端点使用 TLS，请禁用此配置。建议使用默认配置，以获得最大的安全性。

Amazon EMR 设置了 `hbase.rest.ssl.enabled` 和 `hbase.thrift.ssl.enabled`，分别对 REST 和 Thirft 服务器端点使用 TLS。如果您不想对这些端点使用 TLS，请禁用此配置。建议使用默认配置，以获得最大的安全性。

从 EMR 7.6.0 开始，端点上支持 TLS。 HMaster RegionServer Amazon EMR 还设置 `hbase.server.netty.tls.enabled` 和 `hbase.client.netty.tls.enabled`。如果不想对这些端点使用 TLS，请禁用此配置。我们建议您使用默认配置，该配置提供加密功能，从而提供更高的安全性。要了解更多信息，请参阅《*Apache HBase 参考*指南》[中的 HBase RPC 通信中的传输级别安全 (TLS)](https://hbase.apache.org/book.html#_transport_level_security_tls_in_hbase_rpc_communication)。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| HMaster | HMaster | 16000 | SASL \+ Kerberos<br />TLS | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+ 和 emr-7.0.0\+ 中的 SASL \+ Kerberos<br />emr-7.6.0\+ 中的 TLS | 
| HMaster | HMaster 用户界面 | 16010 | TLS | emr-7.3.0\+ | 
| RegionServer | RegionServer | 16020 | SASL \+ Kerberos<br />TLS | emr-4.8.0\+、emr-5.0.0\+、emr-6.0.0\+ 和 emr-7.0.0\+ 中的 SASL \+ Kerberos<br />emr-7.6.0\+ 中的 TLS | 
| RegionServer | RegionServer 信息 | 16030 | TLS | emr-7.3.0\+ | 
| HBase 休息服务器 | Rest Server | 8070 | TLS | emr-7.3.0\+ | 
| HBase 休息服务器 | Rest UI | 8085 | TLS | emr-7.3.0\+ | 
| Hbase Thrift Server | Thrift Server | 9090 | TLS | emr-7.3.0\+ | 
| Hbase Thrift Server | Thrift Server UI | 9095 | TLS | emr-7.3.0\+ | 

## Phoenix
<a name="emr-encryption-support-matrix-phoenix"></a>

 如果您在 EMR 集群中启用了传输中加密，Phoenix Query Server 将支持 TLS `phoenix.queryserver.tls.enabled` 属性，该属性默认设置为 `true`。

要了解更多信息，请参阅 Phoenix Query Server 文档中 [HTTPS 相关的配置](https://phoenix.apache.org/docs/features/query-server#query-server-configuration)。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| Query Server | phoenix.queryserver.http.port | 8765 | TLS | emr-7.3.0\+ | 

## Oozie
<a name="emr-encryption-support-matrix-oozie"></a>

如果您在 Amazon EMR 7.3.0 及更高版本上运行 Oozie，则 [OOZIE-3673](https://issues.apache.org/jira/browse/OOZIE-3673) 可在 Amazon EMR 上使用。如果在运行电子邮件操作时需要配置自定义 SSL 或 TLS 协议，则可以在 `oozie-site.xml` 文件中设置 `oozie.email.smtp.ssl.protocols` 属性。默认情况下，如果启用了传输中加密，Amazon EMR 将使用 TLS v1.3 协议。

如果您在 Amazon EMR 7.3.0 及更高版本上运行 Oozie，则 [OOZIE-3677](https://issues.apache.org/jira/browse/OOZIE-3677) 和 [OOZIE-3674](https://issues.apache.org/jira/browse/OOZIE-3674) 可在 Amazon EMR 上使用。这允许在 `oozie-site.xml` 中指定属性 `keyStoreType` 和 `trustStoreType`。OOZIE-3674 将参数 `--insecure` 添加到 Oozie 客户端，这样就可以忽略证书错误。

Oozie 强制执行 TLS 主机名验证，这意味着任何用于传输中加密的证书都必须满足主机名验证要求。如果证书不符合标准，集群可能会在 Amazon EMR 预置集群的 `oozie share lib update` 阶段卡住。建议您更新证书，确保其符合主机名验证要求。但如果无法更新证书，则可以在集群配置中将 `oozie.https.enabled` 属性设置为 `false`，为 Oozie 禁用 SSL。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| EmbeddedOozieServer | oozie.https.port | 11443 | TLS | emr-7.3.0\+ | 
| EmbeddedOozieServer | oozie.email.smtp.port | 25 | TLS | emr-7.3.0\+ | 

## Hue
<a name="emr-encryption-support-matrix-hue"></a>

默认情况下，当 Amazon EMR 集群中启用传输中加密时，Hue 支持 TLS。有关 Hue 配置的更多信息，请参阅 [Configure Hue with HTTPS / SSL](https://gethue.com/configure-hue-with-https-ssl/)。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| Hue | http\_port | 8888 | TLS | emr-7.4.0\+ | 

## Livy
<a name="emr-encryption-support-matrix-livy"></a>

默认情况下，当 Amazon EMR 集群中启用传输中加密时，Livy 支持 TLS。有关 Livy 配置的更多信息，请参阅[使用 Apache Livy 启用 HTTPS](https://docs.amazonaws.cn/emr/latest/ReleaseGuide/enabling-https.html)。

从 Amazon EMR 7.3.0 开始，如果使用传输中加密和 Kerberos 身份验证，则不能将 Livy 服务器用于依赖于 Hive 元存储的 Spark 应用程序。此问题已在 [HIVE-16340](https://issues.apache.org/jira/browse/HIVE-16340) 中修复，当开源 Spark 应用程序可以升级到 Hive 3 时，此问题将在 [SPARK-44114](https://issues.apache.org/jira/browse/SPARK-44114) 中完全解决。同时，您可以将 `hive.metastore.use.SSL` 设置为 `false` 来解决此问题。有关更多信息，请参阅[配置应用程序](https://docs.amazonaws.cn/emr/latest/ReleaseGuide/emr-configure-apps.html)。

有关更多信息，请参阅[使用 Apache Livy 启用 HTTPS](https://docs.amazonaws.cn/emr/latest/ReleaseGuide/enabling-https.html)。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| livy-server | livy.server.port | 8998 | TLS | emr-7.4.0\+ | 

## JupyterEnterpriseGateway
<a name="emr-encryption-matrix-jupyter-enterprise"></a>

默认情况下，当 Amazon EMR 集群中启用传输中加密时，Jupyter Enterprise Gateway 支持 TLS。有关 Jupyter Enterprise Gateway 配置的更多信息，请参阅 [Securing Enterprise Gateway Server](https://jupyter-enterprise-gateway.readthedocs.io/en/v1.2.0/getting-started-security.html#securing-enterprise-gateway-server)。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| jupyter\_enterprise\_gateway | c. EnterpriseGatewayApp .port | 9547 | TLS | emr-7.4.0\+ | 

## JupyterHub
<a name="emr-encryption-matrix-jupyter-hub"></a>

默认情况下，在 Amazon EMR 集群中启用传输中加密时 JupyterHub 支持 TLS。有关更多信息，请参阅 JupyterHub 文档中的[启用 SSL 加密](https://jupyterhub.readthedocs.io/en/latest/tutorial/getting-started/security-basics.html#enabling-ssl-encryption)。建议不要禁用加密。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| jupyter\_hub | c. JupyterHub .port | 9443 | TLS | emr-5.14.0\+、emr-6.0.0\+、emr-7.0.0\+ | 

## Zeppelin
<a name="emr-encryption-matrix-zeppelin"></a>

 默认情况下，当您在 EMR 集群中启用传输中加密时，Zeppelin 支持 TLS。有关 Zeppelin 配置的更多信息，请参阅 Zeppelin 文档中的 [SSL 配置](https://zeppelin.apache.org/docs/0.11.1/setup/operation/configuration.html#ssl-configuration)。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| zeppelin | zeppelin.server.ssl.port | 8890 | TLS | 7.3.0\+ | 

## Zookeeper
<a name="emr-encryption-matrix-zookeeper"></a>

Amazon EMR 将 `serverCnxnFactory` 设置为 `org.apache.zookeeper.server.NettyServerCnxnFactory`，以为 Zookeeper 仲裁和客户端通信启用 TLS。

`secureClientPort` 指定侦听 TLS 连接的端口。如果客户端不支持与 Zookeeper 的 TLS 连接，则客户端可以连接到 `clientPort` 中指定的 2181 不安全端口。您可以覆盖或禁用这两个端口。

Amazon EMR 会将 `sslQuorum` 和 `admin.forceHttps` 都设置为 `true`，以为仲裁和管理服务器启用 TLS 通信。如果您不希望对仲裁和管理服务器进行传输中加密，可以禁用这些配置。建议使用默认配置，以获得最大的安全性。

有关更多信息，请参阅 Zookeeper 文档中的 [Encryption, Authentication, Authorization Options](https://zookeeper.apache.org/doc/r3.9.2/zookeeperAdmin.html#sc_authOptions)。


| 组件 | 端点 | 端口： | 传输中加密机制 | 发行版支持 | 
| --- | --- | --- | --- | --- | 
| Zookeeper Server | secureClientPort | 2281 | TLS | emr-7.4.0\+ | 
| Zookeeper Server | 仲裁端口 | 有 2 个：<br />跟随节点使用 2888 连接到领导节点。<br />领导节点选择使用 3888 | TLS | emr-7.4.0\+ | 
| Zookeeper Server | admin.serverPort | 8341 | TLS | emr-7.4.0\+ | 