

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# HiveServer2 中的傳輸中加密
<a name="hs2-encryption-intransit"></a>

從 Amazon EMR 6.9.0 版開始，HiveServer2 (HS2) 啟用了 TLS/SSL，作為 [HiveServer2 中的傳輸中加密](#hs2-encryption-intransit) 安全組態的一部分。這會影響您連接至在啟用傳輸中加密的 Amazon EMR 叢集上執行的 HS2 的方式。若要連接至 HS2，您必須修改 JDBC URL 中的 `TRUSTSTORE_PATH` 和 `TRUSTSTORE_PASSWORD` 參數值。下列 URL 是具有所需參數的 HS2 的 JDBC 連線範例：

```
jdbc:hive2://HOST_NAME:10000/default;ssl=true;sslTrustStore=TRUSTSTORE_PATH;trustStorePassword=TRUSTSTORE_PASSWORD
```

請使用下面適當的指令來進行叢集上或叢集外 HiveServer2 加密。

------
#### [ On-cluster HS2 access ]

如果您在 SSH 到主節點之後使用 Beeline 用戶端存取 HiveServer2，則參考 `/etc/hadoop/conf/ssl-server.xml` 使用組態 `ssl.server.truststore.location` 和 `ssl.server.truststore.password` 尋找 `TRUSTSTORE_PATH` 和 `TRUSTSTORE_PASSWORD` 參數值。

下列範例命令可以協助您擷取以下組態：

```
TRUSTSTORE_PATH=$(sed -n '/ssl.server.truststore.location/,+2p' /etc/hadoop/conf/ssl-server.xml | awk -F "[><]" '/value/{print $3}')
TRUSTSTORE_PASSWORD=$(sed -n '/ssl.server.truststore.password/,+2p' /etc/hadoop/conf/ssl-server.xml | awk -F "[><]" '/value/{print $3}')
```

------
#### [ Off-cluster HS2 access ]

 如果要從 Amazon EMR 叢集之外的用戶端存取 HiveServer2，您可以使用下列方法之一來取得 `TRUSTSTORE_PATH` 和 `TRUSTSTORE_PASSWORD`：
+ 將在[安全組態](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-encryption-enable.html)期間建立的 PEM 檔案轉換為 JKS 檔案，並在 JDBC 連線 URL 中使用相同的檔案。例如，對於 openssl 和 keytool，使用下列命令：

  ```
  openssl pkcs12 -export -in trustedCertificates.pem -inkey privateKey.pem -out trustedCertificates.p12 -name "certificate"
  keytool -importkeystore -srckeystore trustedCertificates.p12 -srcstoretype pkcs12 -destkeystore trustedCertificates.jks
  ```
+ 或者，參考 `/etc/hadoop/conf/ssl-server.xml` 以使用組態 `ssl.server.truststore.location` 和 `ssl.server.truststore.password` 來尋找 `TRUSTSTORE_PATH` 和 `TRUSTSTORE_PASSWORD` 參數值。將信任庫檔案下載至用戶端機器，並使用用戶端機器上的路徑作為 `TRUSTSTORE_PATH`。

  如需有關從 Amazon EMR 叢集以外的用戶端存取應用程式的詳細資訊，請參閱[使用 Hive JDBC 驅動器](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/HiveJDBCDriver.html)。

------