Timescale 的默认连接字符串使用安全套接字层 (SSL) 模式 require。用户可以选择在连接到数据库时不使用传输层安全 (TLS),但不鼓励在未加密的情况下连接到生产数据库。为了实现更强的安全性,客户端可以选择验证服务器的身份。如果您希望您的连接客户端验证服务器的身份,您可以连接到 verify-caverify-fullSSL 模式。为此,您需要存储证书链的副本,以便您的连接工具可以找到它。

本节提供有关设置更严格的 SSL 连接的说明。

作为安全连接协议的一部分,服务器通过向客户端提供证书来证明其身份。此证书应由知名且受信任的证书颁发机构颁发和签名。

由于从证书颁发机构请求证书需要一些时间,因此 Timescale 数据库使用自签名证书进行初始化。这使您可以立即启动数据库。启动服务后,将在后台请求签名证书。新证书通常在 30 分钟内收到。然后,您的数据库证书将被替换,几乎没有中断。连接将重置,大多数客户端会自动重新连接。

使用签名证书,您可以将连接切换到更严格的 SSL 模式,例如 verify-caverify-full

有关不同 SSL 模式的更多信息,请参阅 PostgreSQL SSL 模式描述

要设置更严格的 SSL 连接

  1. 生成证书链的副本并将其存储在正确的位置
  2. 更改您的 Timescale 连接字符串
  1. 使用 openssl 工具连接到您的 Timescale 服务并获取证书包。将该包存储在名为 bundle.crt 的文件中。

    $SERVICE_URL_WITH_PORT 替换为您的 Timescale 连接 URL

    openssl s_client -showcerts -partial_chain -starttls postgres \
    -connect $SERVICE_URL_WITH_PORT < /dev/null 2>/dev/null | \
    awk '/BEGIN CERTIFICATE/,/END CERTIFICATE/{ print }' > bundle.crt
  2. 将捆绑包复制到剪贴板

  3. 导航到 https://whatsmychaincert.com/。此在线工具生成完整的证书链,包括根证书颁发机构证书,该证书未包含在数据库返回的证书捆绑包中。

  4. 将您的证书捆绑包粘贴到提供的框中。选中 Include Root Certificate。单击 Generate Chain

  5. 将下载的证书链保存到 ~/.postgresql/root.crt

  6. 将您的 Timescale 连接字符串从 sslmode=require 更改为 sslmode=verify-fullsslmode=verify-ca。例如,要使用 psql 连接到您的数据库,请运行

    psql "postgres://tsdbadmin@$SERVICE_URL_WITH_PORT/tsdb?sslmode=verify-full"

要检查证书是否已被替换,请连接到您的数据库实例并检查返回的证书。我们正在使用两个证书提供商 - Google 和 ZeroSSL,因此您有可能拥有由其中任何一个 CA 颁发的证书

openssl s_client -showcerts -partial_chain -starttls postgres -connect <HOST>:<PORT> < /dev/null 2>/dev/null | grep "Google\|ZeroSSL"

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页