ssl 在 psql 中如何工作?
How ssl works in psql?
在 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,这是首选。我想知道:
- 它如何加密传输到服务器的数据?
- 在将数据包发送到服务器之前,如何选择ssl协议、ssl密码和压缩?
- 由于我没有指定任何 sslrootcert,它是否采用任何默认证书与服务器进行 ssl 握手?
请说明。
- "ECDHE-RSA-AES256-GCM-SHA384"不就是这个问题的答案吗?如果不是,你能扩展你的问题吗?
- 据我所知,这只是外包给ssl库。除了传递配置选项外,PostgreSQL 没有做任何特别的事情。
- 如果在默认位置找到 sslrootcert,它将从默认位置获取(在这种情况下,如果您没有特意在此处放置适当的内容,验证可能会失败)。但如果它没有找到,那么你基本上只能得到 Diffie-Hellman 保护。它不验证服务器的证书实际上是由声明的 CA 签名的,也不验证服务器主机名的证书 "belongs"。您只能保护免受窃听者的侵害,而不能免受 MITM 的侵害。如果客户端想要 MITM 保护,它必须将 sslmode 设置为高于 'require'.
的级别
没有实现服务器可以强制客户端验证服务器证书的机制。
在 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,这是首选。我想知道:
- 它如何加密传输到服务器的数据?
- 在将数据包发送到服务器之前,如何选择ssl协议、ssl密码和压缩?
- 由于我没有指定任何 sslrootcert,它是否采用任何默认证书与服务器进行 ssl 握手?
请说明。
- "ECDHE-RSA-AES256-GCM-SHA384"不就是这个问题的答案吗?如果不是,你能扩展你的问题吗?
- 据我所知,这只是外包给ssl库。除了传递配置选项外,PostgreSQL 没有做任何特别的事情。
- 如果在默认位置找到 sslrootcert,它将从默认位置获取(在这种情况下,如果您没有特意在此处放置适当的内容,验证可能会失败)。但如果它没有找到,那么你基本上只能得到 Diffie-Hellman 保护。它不验证服务器的证书实际上是由声明的 CA 签名的,也不验证服务器主机名的证书 "belongs"。您只能保护免受窃听者的侵害,而不能免受 MITM 的侵害。如果客户端想要 MITM 保护,它必须将 sslmode 设置为高于 'require'. 的级别
没有实现服务器可以强制客户端验证服务器证书的机制。