

# 使用 SSL/TLS 加密与数据库集群的连接
<a name="UsingWithRDS.SSL"></a>

您可以使用应用程序中的安全套接字层 (SSL) 或传输层安全 (TLS) 来加密与运行 Aurora MySQL 或 Aurora PostgreSQL 的数据库集群的连接。

SSL/TLS 连接对在客户端和数据库集群之间移动的数据进行加密，从而提供一层额外的安全性。（可选）您的 SSL/TLS 连接可以通过验证安装在数据库上的服务器证书来执行服务器身份验证。要请求服务器身份验证，请遵循以下一般流程：

1. 为数据库选择对**数据库服务器证书**进行签名的**证书颁发机构（CA）**。有关证书颁发机构的更多信息，请参阅[证书颁发机构](#UsingWithRDS.SSL.RegionCertificateAuthorities)。

1. 下载证书包，以便在连接到数据库时使用。要下载证书捆绑包，请参阅。[特定 Amazon Web Services 区域的证书捆绑包](#UsingWithRDS.SSL.RegionCertificates-BJS)。。
**注意**  
只能使用 SSL/TLS 连接下载所有证书。

1. 使用数据库引擎用于实现 SSL/TLS 连接的过程连接到数据库。每个数据库引擎都有自己的用于实施 SSL/TLS 的过程。要了解如何为您的数据库实施 SSL/TLS，请使用对应于您的数据库引擎的链接：
   +  [使用 Amazon Aurora MySQL 实现高安全性](AuroraMySQL.Security.md) 
   +  [使用 Amazon Aurora PostgreSQL 实现高安全性](AuroraPostgreSQL.Security.md) 

## 证书颁发机构
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities"></a>

**证书颁发机构（CA）**是用于标识证书链顶部的根 CA 的证书。CA 签署安装在每个数据库实例上的**数据库服务器证书**。数据库服务器证书将数据库实例标识为可信服务器。

![\[证书颁发机构概述\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/certificate-authority-overview.png)


Amazon RDS 提供以下 CA 来签署数据库的数据库服务器证书。


****  

| 证书颁发机构（CA） | 说明 | 公用名 (CN) | 
| --- | --- | --- | 
|  rds-ca-rsa2048-g1  |  在大多数 Amazon Web Services 区域中，使用具有 RSA 2048 私有密钥算法和 SHA256 签名算法的证书颁发机构。 在 Amazon GovCloud (US) Regions中，此 CA 使用具有 RSA 2048 私有密钥算法和 SHA384 签名算法的证书颁发机构。 此 CA 支持服务器证书自动轮换。  | Amazon RDS region-identifier Root CA RSA2048 G1 | 
|  rds-ca-rsa4096-g1  |  使用具有 RSA 4096 私有密钥算法和 SHA384 签名算法的证书颁发机构。此 CA 支持服务器证书自动轮换。  | Amazon RDS region-identifier Root CA RSA4096 G1 | 
|  rds-ca-ecc384-g1  |  使用具有 ECC 384 私有密钥算法和 SHA384 签名算法的证书颁发机构。此 CA 支持服务器证书自动轮换。  | Amazon RDS region-identifier Root CA ECC384 G1 | 

**注意**  
如果您使用的是 Amazon CLI，则可以使用 [describe-certificates](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-certificates.html) 查看上面列出的证书颁发机构的有效性。

这些 CA 证书包含在区域和全球证书捆绑包中。当您将 rds-ca-rsa2048-g1 CA 用于数据库时，RDS 会管理数据库上的数据库服务器证书。RDS 会在数据库服务器证书过期之前自动轮换此证书。

### 为数据库设置 CA
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities.Selection"></a>

您可以在执行以下任务时为数据库设置 CA：
+ 创建 Aurora 数据库集群 - 当您使用 Amazon CLI 或 RDS API 在数据库集群中创建第一个数据库实例时，可以为 Aurora 集群中的数据库实例设置 CA。目前，在使用 RDS 控制台创建数据库集群时，无法为数据库集群中的数据库实例设置 CA。有关说明，请参阅 [创建 Amazon Aurora 数据库集群](Aurora.CreateInstance.md)。
+ 修改数据库实例 - 您可以通过修改数据库集群中的数据库实例为其设置 CA。有关说明，请参阅 [修改数据库集群中的数据库实例](Aurora.Modifying.md#Aurora.Modifying.Instance)。

**注意**  
 默认 CA 设置为 rds-ca-rsa2048-g1。您可以使用 [modify-certificates](https://docs.amazonaws.cn/cli/latest/reference/rds/modify-certificates.html) 命令为您的 Amazon Web Services 账户覆盖默认 CA。

可用的 CA 取决于数据库引擎和数据库引擎版本。使用 Amazon Web Services 管理控制台时，您可以使用 **Certificate authority**（证书颁发机构）设置选择 CA，如下图所示。

![\[证书颁发机构选项\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/certificate-authority.png)


控制台仅显示可用于数据库引擎和数据库引擎版本的 CA。如果您使用的是 Amazon CLI，则可以使用 [create-db-instance](https://docs.amazonaws.cn/cli/latest/reference/rds/create-db-instance.html) 或 [modify-db-instance](https://docs.amazonaws.cn/cli/latest/reference/rds/modify-db-instance.html) 命令为数据库实例设置 CA。

如果您使用的是 Amazon CLI，则可以使用 [describe-certificates](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-certificates.html) 命令查看您账户的可用 CA。此命令还在输出的 `ValidTill` 中显示每个 CA 的到期日期。您可以使用 [describe-db-engine-versions](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-engine-versions.html) 命令找到适用于特定数据库引擎和数据库引擎版本的 CA。

以下示例显示了可用于默认 RDS for PostgreSQL 数据库引擎版本的 CA。

```
aws rds describe-db-engine-versions --default-only --engine postgres
```

输出类似于以下内容。`SupportedCACertificateIdentifiers` 中列出了可用的 CA。输出还显示数据库引擎版本是否支持在 `SupportsCertificateRotationWithoutRestart` 中不重新启动的情况下轮换证书。

```
{
    "DBEngineVersions": [
        {
            "Engine": "postgres",
            "MajorEngineVersion": "13",
            "EngineVersion": "13.4",
            "DBParameterGroupFamily": "postgres13",
            "DBEngineDescription": "PostgreSQL",
            "DBEngineVersionDescription": "PostgreSQL 13.4-R1",
            "ValidUpgradeTarget": [],
            "SupportsLogExportsToCloudwatchLogs": false,
            "SupportsReadReplica": true,
            "SupportedFeatureNames": [
                "Lambda"
            ],
            "Status": "available",
            "SupportsParallelQuery": false,
            "SupportsGlobalDatabases": false,
            "SupportsBabelfish": false,
            "SupportsCertificateRotationWithoutRestart": true,
            "SupportedCACertificateIdentifiers": [
                "rds-ca-rsa2048-g1",
                "rds-ca-ecc384-g1",
                "rds-ca-rsa4096-g1"
            ]
        }
    ]
}
```

### 数据库服务器证书有效期
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities.DBServerCert"></a>

数据库服务器证书的有效期取决于数据库引擎和数据库引擎版本。如果数据库引擎版本支持在不重启的情况下轮换证书，则数据库服务器证书的有效期为 1 年。否则，有效期为 3 年。

有关数据库服务器证书轮换的更多信息，请参阅[自动服务器证书轮换](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-server-cert-rotation)。

### 查看数据库实例的 CA
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities.Viewing"></a>

您可以通过查看控制台中的**连接性和安全性**选项卡来查看有关数据库的 CA 的详细信息，如下图所示。

![\[证书颁发机构详细信息\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/certificate-authority-details.png)


如果您使用的是 Amazon CLI，您可以使用 [describe-db-instances](https://docs.amazonaws.cn/cli/latest/reference/rds/describe-db-instances.html) 命令，查看有关数据库实例的 CA 的详细信息。

## 下载 Aurora 的证书捆绑包
<a name="UsingWithRDS.SSL.CertificatesDownload"></a>

当您使用 SSL 或 TLS 连接到数据库时，数据库实例需要来自 Amazon RDS 的信任证书。在下表中选择相应的链接，来下载与托管数据库的 Amazon Web Services 区域相对应的捆绑包。

### 特定 Amazon Web Services 区域的证书捆绑包
<a name="UsingWithRDS.SSL.RegionCertificates-BJS"></a>

要获取中国（北京）Amazon 区域或中国（宁夏）Amazon 区域的证书捆绑包，可从 [https://rds-truststore.s3.cn-north-1.amazonaws.com.cn/global/global-bundle.pem](https://rds-truststore.s3.cn-north-1.amazonaws.com.cn/global/global-bundle.pem) 下载。如果应用程序位于 Microsoft Windows 中并需要 PKCS7 文件，可以从 [https://rds-truststore.s3.cn-north-1.amazonaws.com.cn/global/global-bundle.p7b](https://rds-truststore.s3.cn-north-1.amazonaws.com.cn/global/global-bundle.p7b) 下载 PKCS7 证书捆绑包。

该捆绑包包含 `rds-ca-rsa2048-g1`、`rds-ca-rsa4096-g1` 和 `rds-ca-ecc384-g1` 根 CA 证书。您的应用程序信任存储只需要注册根 CA 证书。

要获取证书捆绑包，可通过下表中与 Amazon 区域对应的链接下载。


|  **Amazon 区域**  |  **证书捆绑包 (PEM)**  |  **证书捆绑包 (PKCS7)**  | 
| --- | --- | --- | 
| China (Beijing) |  [cn-north-1-bundle.pem](https://rds-truststore.s3.cn-north-1.amazonaws.com.cn/cn-north-1/cn-north-1-bundle.pem)  |  [cn-north-1-bundle.p7b](https://rds-truststore.s3.cn-north-1.amazonaws.com.cn/cn-north-1/cn-north-1-bundle.p7b)  | 
| China (Ningxia) |  [cn-northwest-1-bundle.pem](https://rds-truststore.s3.cn-north-1.amazonaws.com.cn/cn-northwest-1/cn-northwest-1-bundle.pem)  |  [cn-northwest-1-bundle.p7b](https://rds-truststore.s3.cn-north-1.amazonaws.com.cn/cn-northwest-1/cn-northwest-1-bundle.p7b)  | 

### 查看 CA 证书的内容
<a name="UsingWithRDS.SSL.CertificatesDownload.viewing"></a>

要检查您的 CA 证书包的内容，请使用以下命令：

```
keytool -printcert -v -file global-bundle.pem
```