Heroku PostgreSQL - 如何在没有证书的情况下发生SSL连接?

问题描述:

我有一个Heroku PostgreSQL数据库。使用Heroku提供的凭证(主机,数据库,用户名,密码),我可以使用PSequel客户端从本地机器进行连接。由于Heroku需要SSL,我必须检查“使用SSL”,这会导致出现更多字段(客户端密钥,客户端证书,服务器根证书)。但是,Heroku不提供这样的证书。我可以通过勾选“使用SSL”来连接到数据库,但不提供这些证书给PSequel。Heroku PostgreSQL - 如何在没有证书的情况下发生SSL连接?

这是如何工作的?我的印象是SSL连接需要证书。没有证书,我的理解是你可以做密钥交换和加密,但是你不知道你在跟谁说话,所以你很容易受到中间人攻击。根据我的理解,我不能用SSL连接到Heroku PostgreSQL数据库,或者我错了吗?

过去,我使用Google Cloud SQL(MySQL)和Sequel Pro。在该设置中,我将Cloud SQL设置设置为需要SSL,并且Google向我提供了证书(客户端密钥,客户端证书和服务器CA),然后将其提供给Sequel Pro以便使用SSL进行连接。如果我尝试在未提供证书的情况下尝试连接(但请勾选“使用SSL连接”,并输入正确的主机,用户名,密码),我无法连接,而是获得“拒绝访问”权限。

你应该ask PSequel,因为这不是开源的,所以我不能看代码。

通常,为PostgreSQL服务器设置SSL连接时,客户端可以使用连接选项sslmode =require强制SSL连接,并且您不需要拥有客户端证书(SSL用于encryprion,然后,而不是认证)。