如何设置 DataGrip 通过使用 DataGrip 的隧道以 SSL 模式连接 Cloud SQL
Posted
技术标签:
【中文标题】如何设置 DataGrip 通过使用 DataGrip 的隧道以 SSL 模式连接 Cloud SQL【英文标题】:How to setup DataGrip connect Cloud SQL with SSL mode through Tunnel using DataGrip 【发布时间】:2019-06-25 10:59:42 【问题描述】:我是 Cloud SQL 和 Cloud Security 的新手。所以现在我已经使用 Cloud SQL 并使用 Compute Engine 连接到数据库。我将它用作代理服务器并用于从本地计算机进行远程连接。
然后我需要使用 SSL 连接尝试创建新的客户端证书,如果我从代理服务器连接就可以了。
但当我尝试使用 DataGrip 从本地计算机连接时不起作用。我收到一条错误消息。
与 postgres@database-server 的连接失败。 [08006] 无法打开 SSL 根证书文件 /home/user/.postgresql/root.crt。
【问题讨论】:
您使用什么版本的 DataGrip? 我使用 2019.1 版本,并使用从 Google Cloud SQL 生成并在 SSL 选项卡中使用的所有私钥文件,并包含用于连接到代理服务器的 ssh 配置。 尝试更新到最新的 DataGrip 版本。我们对 SSL 子系统进行了重大改造 【参考方案1】:这是由于版本 42.2.2 之后 Postgres JDBC 驱动程序的更改引起的。后续版本将 ssl=true 也视为 sslmode=verify-ca,同时还引入了导致默认 SSLFactory 无法识别 JRE cacerts 的更改>.
要解决此问题,请恢复到驱动程序 42.2.2 或将 sslfactory 设置为 org.postgresql.ssl.DefaultJavaSSLFactory
还有一个 GitHub 问题 https://github.com/pgjdbc/pgjdbc/issues/1307
【讨论】:
【参考方案2】:目前,要使用 SSL 正常工作,您需要按以下方式配置 DataGrip。
-
转到 SSH/SSL 选项卡
启用 SSL 并提供 CA 证书、客户端证书和客户端私钥的路径
转到高级选项卡
找到
sslmode
属性并设置所需的验证级别,例如验证-ca
找到sslrootcert
属性并提供您的ca.cert
的路径
此外,您是否将您的root.crt
转为/home/user/.postgresql/root.crt
?
另外,如果要引用https://cloud.google.com/sql/docs/postgres/connect-admin-ip#connect-ssl,请使用以下参数:
sslmode=verify-ca
sslrootcert=/path/to/your/server-ca.pem
ca file=/path/to/your/server-ca.pem
client certificate file=/path/to/your/client-cert.pem
client key file=/path/to/your/client-key.pem
【讨论】:
仅供参考,我尝试通过 SSH 隧道和 SSL 连接到 Cloud SQL。现在它仍然无法正常工作。我尝试使用 SSL 模式在不使用 SSH 隧道的情况下进行连接仍然遇到相同的错误。所以我想知道来自谷歌的证书文件。不做任何事情就可以使用吗?那么 root.crt 呢?实际上,在我更新 DataGrip 的版本之前它已经工作了。所以我尝试使用其他软件我也遇到了同样的错误。对于您喜欢的 URL,我已经尝试过了。它通过代理服务器工作。 在我尝试按照你的建议去做之后。我收到一个新错误连接到 postgres@db-server 失败。 [08006] SSL 错误:收到致命警报:unexpected_message以上是关于如何设置 DataGrip 通过使用 DataGrip 的隧道以 SSL 模式连接 Cloud SQL的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 DataGrip 每 100 行创建一个 sql 插入语句
如何通过 Jetbrains DataGrip 连接到远程 MS SQL Server 数据库?