

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 配置连接的安全选项
<a name="connecting-ssl-support"></a>

Amazon Redshift 支持安全套接字层 (SSL) 连接来加密数据和服务器证书，以验证客户端连接到的服务器证书。

## SSL
<a name="connect-using-ssl"></a>

为了支持 SSL 连接，Amazon Redshift 会在每个集群中创建并安装 [Amazon Certificate Manager (ACM)](https://www.amazonaws.cn/certificate-manager/) 颁发的 SSL 证书。ACM 证书受到大多数操作系统、Web 浏览器和客户端的公开信任。如果您的 SQL 客户端或应用程序使用 SSL 连接到 Amazon Redshift，并且 `sslmode` 连接选项设置为 `require`、`verify-ca` 或 `verify-full`，则您可能需要下载证书捆绑包。如果您的客户需要，Amazon Redshift 会提供如下捆绑证书：
+ 捆绑包下载地址：[https://s3.amazonaws.com/redshift-downloads/amazon-trust-ca-bundle.crt](https://s3.amazonaws.com/redshift-downloads/amazon-trust-ca-bundle.crt)。
  + 预期的 MD5 校验码为 418dea9b6d5d5d5de7a8f1ac42e164cdcf。
  + sha256 校验码为 36dba8e4b8041cd14b9d601593963301bcbb92e1c456847784de2acb5bd550。

  不要使用位于 `https://s3.amazonaws.com/redshift-downloads/redshift-ca-bundle.crt` 的之前的证书捆绑包。
+  在中国 Amazon Web Services 区域，请从以下网址下载捆绑包：[https://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/amazon-trust-ca-bundle.crt](https://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/amazon-trust-ca-bundle.crt)。
  + 预期的 MD5 校验码为 418dea9b6d5d5d5de7a8f1ac42e164cdcf。
  + sha256 校验码是 36dba8e4b8041cd14b9d601593963301bcbb92e1c456847784de2acb5bd550。

  不要使用位于 `https://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/redshift-ca-bundle.crt` 和 `https://s3.cn-north-1.amazonaws.com.cn/redshift-downloads-cn/redshift-ssl-ca-cert.pem` 的以前的证书捆绑包

**重要**  
Amazon Redshift 改变了我们管理 SSL 证书的方法。您可能需要更新当前的信任根 CA 证书，才能继续使用 SSL 连接集群。有关更多信息，请参阅 [将 SSL 连接过渡到 ACM 证书](connecting-transitioning-to-acm-certs.md)。

默认情况下，无论连接是否使用 SSL，集群数据库都会接受该连接。要将您的集群配置为需要使用 SSL 连接，请在与集群关联的参数组中将 `require_SSL` 参数设置为 `true`。

Amazon Redshift 支持符合联邦信息处理标准 (FIPS) 140-2 的 SSL 模式。符合 FIPS 的 SSL 模式在默认情况下处于禁用状态。

**重要**  
仅在您的系统需要与 FIPS 兼容时才启用与 FIPS 兼容的 SSL 模式。

要启用符合 FIPS 的 SSL 模式，请在与 Amazon Redshift 集群或 Redshift Serverless 工作组关联的参数组中，将 `use_fips_ssl` 参数和 `require_SSL` 参数设置为 `true`。有关修改集群上的参数组的信息，请参阅 [Amazon Redshift 参数组](working-with-parameter-groups.md)。有关修改工作组上的参数组的信息，请参阅[配置与 Amazon Redshift Serverless 的符合 FIPS 的 SSL 连接](serverless-connecting.md#serverless_secure-fips-ssl)。

 Amazon Redshift 支持 Elliptic Curve Diffie—Hellman Ephemeral (ECDHE) 密钥协商协议。ECDHE 使得客户端和服务器各有一个椭圆曲线公有/私有密钥对，用来在不安全的通道上创建共享密钥。您无需在 Amazon Redshift 中进行任何配置即可启用 ECDHE。如果您从使用 ECDHE 来加密客户端与服务器间通信的 SQL 客户端工具进行连接，则 Amazon Redshift 将使用提供的密码列表来建立合适的连接。有关更多信息，请参阅 Wikipedia 上的 [Elliptic curve diffie—hellman](https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman) 和 OpenSSL 网站上的[密码](https://www.openssl.org/)。

## ODBC 中的 SSL 和信任 CA 证书
<a name="connecting-ssl-support-odbc"></a>

如果您使用最新 Amazon Redshift ODBC 驱动程序 (1.3.7.1000 版或更高版本) 连接，则可以跳过此部分。要下载最新驱动程序，请参阅[为 Amazon Redshift 配置 ODBC 驱动程序版本 2.x 连接](odbc20-install.md)。

您可能需要更新当前的信任根 CA 证书，才能继续使用 SSL 连接集群。有关更多信息，请参阅 [SSL](#connect-using-ssl)。

您可以验证下载的证书是否与此预期的 MD5 校验和码匹配。为此，您可以在 Linux 操作系统上使用 Md5sum 程序，或者在 Windows 和 macOS X 操作系统上使用其他工具。

 ODBC DSN 中的 `sslmode` 设置用于确定如何处理客户端连接加密和服务器证书验证。Amazon Redshift 支持客户端连接中的以下 `sslmode` 值：
+ `disable`

  SSL 处于禁用状态，且连接未加密。
+ `allow`

  如果服务器需要，则使用 SSL。
+ `prefer`

  如果服务器支持，则使用 SSL。Amazon Redshift 支持 SSL，因此您可以在将 `sslmode` 设置为 `prefer` 时使用 SSL。
+ `require`

  需要使用 SSL。
+ `verify-ca`

  必须使用 SSL，且必须验证服务器证书。
+ `verify-full`

  必须使用 SSL。必须验证服务器证书，且服务器主机名必须与证书上的主机名属性一致。

您可以确定是否使用了 SSL 以及是否在客户端和服务器之间的连接中验证了服务器证书。为此，您需要查看客户端上 ODBC DSN 的 `sslmode` 设置以及服务器上 Amazon Redshift 集群的 `require_SSL` 设置。下表介绍了各种客户端与服务器设置组合的加密结果：

[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/redshift/latest/mgmt/connecting-ssl-support.html)

### 在 Microsoft Windows 上使用服务器证书和 ODBC 进行连接
<a name="connecting-ssl-support-odbc-with-cert"></a>

 如果要使用 SSL 和服务器证书连接到集群，请先将证书下载到客户端计算机或 Amazon EC2 实例。然后配置 ODBC DSN。

1.  将 Amazon Redshift 证书颁发机构包下载到客户端计算机上的驱动程序安装目录中的 `lib` 文件夹，然后将该文件另存为 `root.crt`。有关下载信息，请参阅[SSL](#connect-using-ssl)。

1.  打开 **ODBC Data Source Administrator**，然后添加或编辑 ODBC 连接的系统 DSN 条目。对于 **SSL Mode**，如果不使用 DNS 别名，请选择 `verify-full`。如果您使用 DNS 别名，请选择 `verify-ca`。然后选择**保存**。

    有关配置 ODBC DSN 的更多信息，请参阅[为 Amazon Redshift 配置 ODBC 驱动程序版本 2.x 连接](odbc20-install.md)。

## Java 中的 SSL 和服务器证书
<a name="connecting-ssl-support-java"></a>

SSL 通过加密可在您的客户端与集群之间移动的数据来提供一个安全层。使用服务器证书可验证集群是否为 Amazon Redshift 集群，从而提供一个额外的安全层。具体方法是，检查自动安装在您预配置的所有集群上的服务器证书。有关将服务器证书 JDBC 一起使用的更多信息，请转到 PostgreSQL 文档中的[配置客户端](https://jdbc.postgresql.org/documentation/ssl/#configuring-the-client)。

### 在 Java 中使用信任 CA 证书以进行连接
<a name="connecting-ssl-support-java-with-cert"></a>

**重要**  
Amazon Redshift 改变了我们管理 SSL 证书的方法。您可能需要更新当前的信任根 CA 证书，才能继续使用 SSL 连接集群。有关更多信息，请参阅 [SSL](#connect-using-ssl)。

**使用信任 CA 证书进行连接**

您可以使用 `redshift-keytool.jar` 文件将 Amazon Redshift 证书颁发机构包中的 CA 证书导入 Java 信任存储库或您的私有信任存储库中。

1. 如果您使用 Java 命令行 `-Djavax.net.ssl.trustStore` 选项，请尽量将其从命令行中删除。

1. 下载 [redshift-keytool.jar](https://s3.amazonaws.com/redshift-downloads/redshift-keytool.jar)。

1. 请执行下列操作之一：
   + 要将 Amazon Redshift 证书颁发机构捆绑包导入 Java 信任存储库中，请运行以下命令。

     ```
     java -jar redshift-keytool.jar -s
     ```
   + 要将 Amazon Redshift 证书颁发机构捆绑包导入您的私有信任存储库中，请运行以下命令：

     ```
     java -jar redshift-keytool.jar -k <your_private_trust_store> -p <keystore_password> 
     ```