Timescale 的默认连接字符串使用安全套接字层 (SSL) 模式 require
。用户可以选择在连接到数据库时不使用传输层安全 (TLS),但不鼓励在未加密的情况下连接到生产数据库。为了实现更强的安全性,客户端可以选择验证服务器的身份。如果您希望您的连接客户端验证服务器的身份,您可以连接到 verify-ca
或 verify-full
的 SSL 模式。为此,您需要存储证书链的副本,以便您的连接工具可以找到它。
本节提供有关设置更严格的 SSL 连接的说明。
作为安全连接协议的一部分,服务器通过向客户端提供证书来证明其身份。此证书应由知名且受信任的证书颁发机构颁发和签名。
由于从证书颁发机构请求证书需要一些时间,因此 Timescale 数据库使用自签名证书进行初始化。这使您可以立即启动数据库。启动服务后,将在后台请求签名证书。新证书通常在 30 分钟内收到。然后,您的数据库证书将被替换,几乎没有中断。连接将重置,大多数客户端会自动重新连接。
使用签名证书,您可以将连接切换到更严格的 SSL 模式,例如 verify-ca
或 verify-full
。
有关不同 SSL 模式的更多信息,请参阅 PostgreSQL SSL 模式描述。
要设置更严格的 SSL 连接
- 生成证书链的副本并将其存储在正确的位置
- 更改您的 Timescale 连接字符串
使用
openssl
工具连接到您的 Timescale 服务并获取证书包。将该包存储在名为bundle.crt
的文件中。将
$SERVICE_URL_WITH_PORT
替换为您的 Timescale 连接 URLopenssl 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将捆绑包复制到剪贴板
导航到 https://whatsmychaincert.com/。此在线工具生成完整的证书链,包括根证书颁发机构证书,该证书未包含在数据库返回的证书捆绑包中。
将您的证书捆绑包粘贴到提供的框中。选中
Include Root Certificate
。单击Generate Chain
。将下载的证书链保存到
~/.postgresql/root.crt
。将您的 Timescale 连接字符串从
sslmode=require
更改为sslmode=verify-full
或sslmode=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 上编辑此页。