是否可以在AWS ELB上终止SSL以引导Postgres Server,从而使以下命令成功?
PGSSLMODE=verify-full
PGSSLROOTCERT=/path/to/go-daddy-root-ca.pem
PGCONNECT_TIMEOUT=5
psql -h my-postgres.example.com -p 5432 -U test_username test-database -c 'select 1';
如果我在Postgres服务上设置ssl证书和密钥,并使用以下参数,我就可以在负载平衡器上使用TCP协议,在实例协议上使用TCP:
-c
ssl=on
-c
ssl_cert_file=/var/lib/postgresql/my-postgres.example.com.crt
-c
ssl_key_file=/var/lib/postgresql/my-postgres.example.com.key
但是,如果可能的话,我希望在负载均衡器级别处理SSL,这样就不会将证书和密钥传递到运行postgres服务的实例中。我已经尝试了以下ELB配置:
LB Proto,实例Proto,Postres SSL,成功/失败
TCP,TCP,打开,成功
SSL,TCP,开启,失败
TCP,SSL,打开,失败
SSL,SSL,开启,故障
SSL,TCP,关闭,失败
故障消息如下:
psql: error: could not connect to server: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
也许NLB可以工作,也许在Postgres服务级别端到端终止SSL是verify-full
成功的唯一途径?
如果它有助于另一种方法,postgres将在EKS集群中运行。
感谢您提供的任何信息!
我们在RDS postgres db前面使用NLB。不幸的是,它只是";"代理人";在那里请求w/out SSL终止-NLB配置在TCP端口5432上。你看过相对较新的AWS RDS代理吗?根据文档,它应该能够进行SSL终止,我不确定的是,你是否可以在没有RDS的情况下使用它。当然,另一种方法是自行设置此代理,并考虑此解决方案的所有优点和缺点。