【问题标题】:How ssl works in psql?ssl 如何在 psql 中工作?
【发布时间】:2020-03-31 21:56:28
【问题描述】:

在 AWS RDS postgresql 服务器端 ssl 已强制使用以下配置值。

rds.force_ssl   1
ssl 1

当我尝试在不指定 sslmode 和 sslrootcert 的情况下连接到 postgres RDS 主机时,它允许 ssl 连接。

psql -h hostname.us-east-1.rds.amazonaws.com -p 5432 --user=username
psql (10.10 (Ubuntu 10.10-0ubuntu0.18.04.1), server 10.6)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

username=>

由于我没有指定 sslmode,所以它采用了首选的默认 sslmode。我想知道:

  1. 它如何加密传输到服务器的数据?
  2. 在将数据包发送到服务器之前如何选择 ssl 协议、ssl 密码和压缩?
  3. 由于我没有指定任何 sslrootcert,它是否采用任何默认证书来与服务器进行 ssl 握手?

请解释一下。

【问题讨论】:

    标签: postgresql amazon-web-services ssl amazon-rds psql


    【解决方案1】:
    1. “ECDHE-RSA-AES256-GCM-SHA384”不是这个问题的答案吗?如果没有,您能否扩展您的问题?
    2. 据我所知,这只是外包给 ssl 库。除了传递配置选项之外,PostgreSQL 没有做任何特别的事情。
    3. 如果在默认位置找到 sslrootcert,它将从默认位置获取(在这种情况下,如果您没有特意在其中放置适当的东西,验证可能会失败)。但如果它没有找到,那么你基本上只能得到 Diffie-Hellman 保护。它不会验证服务器的证书是否确实由声称的 CA 签名,也不会验证证书是否“属于”服务器的主机名。你只能得到窃听者的保护,而不是 MITM。如果客户端想要 MITM 保护,它必须将 sslmode 设置为高于“要求”的级别。

    没有实现服务器可以强制客户端验证服务器证书的机制。

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      相关资源
      最近更新 更多