我想要实现的是
Postgresql数据库 -透明TCP - 云上的客户
Postgresql数据库 -透明TCP - 跳转服务器上的nginx -SSL 云外的客户端
我想在带有SSL参数的流中添加nginx反向代理的另一层SSL加密。
nginx.conf
中添加的配置是这样的(已经制作了SSL证书和密钥)
stream{
upstream pg{
server [postgresql server ip]:5432;
}
server{
listen 5430;
#ssl_preread on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/nginx/cert/server.crt;
ssl_certificate_key /etc/nginx/cert/server.key;
ssl_session_timeout 2h;
ssl_verify_client off;
proxy_pass pg;
}
}
我试着telnet [jump server public ip] 5430
,连接打开了。但是,当我使用dbeaver客户端连接到该网关时,它响应为‘服务器上不允许使用SSL’。怎么啦?postgresql是否知道这个dbeaver客户端与nginx的连接是SSL加密的,并回答了一个错误消息?
发布于 2023-03-30 14:35:20
您不能这样做,因为PostgreSQL中的TLS不是非TLS连接的简单包装器,就像HTTPS是HTTPS那样。相反,它从一些简单的通信开始,然后升级到TLS。正因为如此,反向代理不能简单地终止TLS并转发内部应用程序数据,而是必须实际实现PostgreSQL使用的协议的一些基础知识,而nginx并不提供此功能。
有关详细信息,请参阅用于PostgreSQL的NGINX终止
https://serverfault.com/questions/1127529
复制相似问题