为 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
-
打开 Spotlight 搜索(Command + 空格)
-
搜索 Keychain Access
-
在系统密钥链下选择系统根
-
在证书列表中查找 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 证书。
-
下载根证书:
wget https://www.amazontrust.com/repository/AmazonRootCA1.pem
-
将证书复制到信任存储:
sudo cp ./AmazonRootCA1.pem /etc/pki/ca-trust/source/anchors/
-
更新 CA 信任存储:
sudo update-ca-trust
-
验证安装:
trust list | grep "Amazon Root CA 1"
macOS 证书安装
这些证书安装步骤是可选的。Linux 证书安装也适用于 macOS。
-
下载根证书:
wget https://www.amazontrust.com/repository/AmazonRootCA1.pem
-
将证书添加到系统密钥链:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain AmazonRootCA1.pem
-
验证安装:
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 进行连接
-
生成并设置身份验证令牌:
export PGPASSWORD=$(aws dsql generate-db-connect-admin-auth-token --region=
your-cluster-region
--hostnameyour-cluster-endpoint
) -
使用系统证书(如果已预安装)进行连接:
PGSSLROOTCERT=system \ PGSSLMODE=verify-full \ psql --dbname postgres \ --username admin \ --host
your-cluster-endpoint
-
或者,使用下载的证书进行连接:
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
从 macOS 进行连接
-
生成并设置身份验证令牌:
export PGPASSWORD=$(aws dsql generate-db-connect-admin-auth-token --region=
your-cluster-region
--hostnameyour-cluster-endpoint
) -
使用系统证书(如果已预安装)进行连接:
PGSSLROOTCERT=system \ PGSSLMODE=verify-full \ psql --dbname postgres \ --username admin \ --host
your-cluster-endpoint
-
或者,下载根证书并将其另存为
root.pem
(如果未预安装证书)PGSSLROOTCERT=/full/path/to/root.pem \ PGSSLMODE=verify-full \ psql —dbname postgres \ --username admin \ --host your_cluster_endpoint
-
使用 psql 进行连接:
PGSSLROOTCERT=/full/path/to/root.pem \ PGSSLMODE=verify-full \ psql —dbname postgres \ --username admin \ --host your_cluster_endpoint
从 Windows 进行连接
使用命令提示符
-
生成身份验证令牌:
aws dsql generate-db-connect-admin-auth-token ^ --region=
your-cluster-region
^ --expires-in=3600 ^ --hostname=your-cluster-endpoint
-
设置密码环境变量:
set "PGPASSWORD=
token-from-above
" -
设置 SSL 配置:
set PGSSLROOTCERT=C:\full\path\to\root.pem set PGSSLMODE=verify-full
-
连接到数据库:
"C:\Program Files\PostgreSQL\17\bin\psql.exe" --dbname postgres ^ --username admin ^ --host
your-cluster-endpoint
使用 PowerShell
-
生成并设置身份验证令牌:
$env:PGPASSWORD = (aws dsql generate-db-connect-admin-auth-token --region=
your-cluster-region
--expires-in=3600 --hostname=your-cluster-endpoint
) -
设置 SSL 配置:
$env:PGSSLROOTCERT='C:\full\path\to\root.pem' $env:PGSSLMODE='verify-full'
-
连接到数据库:
"C:\Program Files\PostgreSQL\17\bin\psql.exe" --dbname postgres ` --username admin ` --host
your-cluster-endpoint