为 Aurora DSQL 连接配置 SSL/TLS 证书 - Amazon Aurora DSQL

为 Aurora DSQL 连接配置 SSL/TLS 证书

Aurora DSQL 要求所有连接均使用传输层安全性协议(TLS)加密。要建立安全连接,客户端系统必须信任 Amazon 根证书颁发机构(Amazon Root CA 1)。此证书预安装在许多操作系统上。本节提供在各种操作系统上验证预安装的 Amazon Root CA 1 证书的说明,并指导您完成手动安装证书的过程(如果证书尚不存在)。

建议使用 PostgreSQL 版本 17。

重要

对于生产环境,建议使用 verify-full SSL 模式,以确保最高级别的连接安全性。此模式验证服务器证书是否由受信任的证书颁发机构签名,以及服务器主机名是否与证书匹配。

验证预安装证书

在大多数操作系统中,已经预安装了 Amazon Root CA 1。要验证这一点,您可以按照以下步骤操作。

Linux(RedHat/CentOS/Fedora)

在终端中运行以下命令:

trust list | grep "Amazon Root CA 1"

如果证书已安装,将显示以下输出:

label: Amazon Root CA 1

macOS

  1. 打开 Spotlight 搜索(Command + 空格

  2. 搜索 Keychain Access

  3. 系统密钥链下选择系统根

  4. 在证书列表中查找 Amazon Root CA 1

Windows

注意

由于 psql Windows 客户端存在一个已知问题,因此使用系统根证书 (sslrootcert=system) 可能会返回以下错误:SSL error: unregistered scheme。您可以采用从 Windows 进行连接作为使用 SSL 连接到集群的替代方法。

如果操作系统中未安装 Amazon Root CA 1,请按照以下步骤操作。

安装证书

如果操作系统上未预安装 Amazon Root CA 1 证书,则需要手动安装该证书,以便与 Aurora DSQL 集群建立安全连接。

Linux 证书安装

按照以下步骤在 Linux 系统上安装 Amazon 根 CA 证书。

  1. 下载根证书:

    wget https://www.amazontrust.com/repository/AmazonRootCA1.pem
  2. 将证书复制到信任存储:

    sudo cp ./AmazonRootCA1.pem /etc/pki/ca-trust/source/anchors/
  3. 更新 CA 信任存储:

    sudo update-ca-trust
  4. 验证安装:

    trust list | grep "Amazon Root CA 1"

macOS 证书安装

这些证书安装步骤是可选的。Linux 证书安装也适用于 macOS。

  1. 下载根证书:

    wget https://www.amazontrust.com/repository/AmazonRootCA1.pem
  2. 将证书添加到系统密钥链:

    sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain AmazonRootCA1.pem
  3. 验证安装:

    security find-certificate -a -c "Amazon Root CA 1" -p /Library/Keychains/System.keychain

使用 SSL/TLS 验证进行连接

在配置 SSL/TLS 证书以便与 Aurora DSQL 集群建立安全连接之前,请确保满足以下先决条件。

  • 已安装 PostgreSQL 版本 17

  • 使用适当的凭证配置了 AWS CLI

  • Aurora DSQL 集群端点信息

从 Linux 进行连接

  1. 生成并设置身份验证令牌:

    export PGPASSWORD=$(aws dsql generate-db-connect-admin-auth-token --region=your-cluster-region --hostname your-cluster-endpoint)
  2. 使用系统证书(如果已预安装)进行连接:

    PGSSLROOTCERT=system \ PGSSLMODE=verify-full \ psql --dbname postgres \ --username admin \ --host your-cluster-endpoint
  3. 或者,使用下载的证书进行连接:

    PGSSLROOTCERT=/full/path/to/root.pem \ PGSSLMODE=verify-full \ psql --dbname postgres \ --username admin \ --host your-cluster-endpoint
注意

有关 PGSSLMODE 设置的更多信息,请参阅 PostgresQL 17 Database Connection Control Functions 文档中的 sslmode

从 macOS 进行连接

  1. 生成并设置身份验证令牌:

    export PGPASSWORD=$(aws dsql generate-db-connect-admin-auth-token --region=your-cluster-region --hostname your-cluster-endpoint)
  2. 使用系统证书(如果已预安装)进行连接:

    PGSSLROOTCERT=system \ PGSSLMODE=verify-full \ psql --dbname postgres \ --username admin \ --host your-cluster-endpoint
  3. 或者,下载根证书并将其另存为 root.pem(如果未预安装证书)

    PGSSLROOTCERT=/full/path/to/root.pem \ PGSSLMODE=verify-full \ psql —dbname postgres \ --username admin \ --host your_cluster_endpoint
  4. 使用 psql 进行连接:

    PGSSLROOTCERT=/full/path/to/root.pem \ PGSSLMODE=verify-full \ psql —dbname postgres \ --username admin \ --host your_cluster_endpoint

从 Windows 进行连接

使用命令提示符

  1. 生成身份验证令牌:

    aws dsql generate-db-connect-admin-auth-token ^ --region=your-cluster-region ^ --expires-in=3600 ^ --hostname=your-cluster-endpoint
  2. 设置密码环境变量:

    set "PGPASSWORD=token-from-above"
  3. 设置 SSL 配置:

    set PGSSLROOTCERT=C:\full\path\to\root.pem set PGSSLMODE=verify-full
  4. 连接到数据库:

    "C:\Program Files\PostgreSQL\17\bin\psql.exe" --dbname postgres ^ --username admin ^ --host your-cluster-endpoint

使用 PowerShell

  1. 生成并设置身份验证令牌:

    $env:PGPASSWORD = (aws dsql generate-db-connect-admin-auth-token --region=your-cluster-region --expires-in=3600 --hostname=your-cluster-endpoint)
  2. 设置 SSL 配置:

    $env:PGSSLROOTCERT='C:\full\path\to\root.pem' $env:PGSSLMODE='verify-full'
  3. 连接到数据库:

    "C:\Program Files\PostgreSQL\17\bin\psql.exe" --dbname postgres ` --username admin ` --host your-cluster-endpoint

其他资源