0

注意:我的数据库可以正常工作,因为我能够从应用程序中迁移和查询。

所以我已经在数字海洋的新“应用程序”功能上设置了我的应用程序和数据库。现在我正在尝试连接到生产数据库,但出现连接超时错误。以下是我输入的详细信息,但也许我缺少我的 SSL 证书?如果是,我该怎么做?因为我相信数字海洋会自动为我设置 SSL..

数据库:postgresql 连接工具:TablePlus

在此处输入图像描述

在此处输入图像描述

更新

我的网站是 SSL 的 在此处输入图像描述

直接在DO上查了,我的账户里没有存储证书 在此处输入图像描述

4

1 回答 1

0

所以几天后我放弃并转而使用 Droplets。我觉得 Apps Platform 对于快速原型来说很酷,但我无法控制我想要在其中做什么。当我尝试时,我认为我什至不能在控制台中运行 sudo 。

如果您在数字海洋上使用开发数据库,​​以下是我浏览的其他一些链接,它们可能会或可能不会帮助处于类似情况的其他人。还有我收到的支持票解决方案。

链接

  1. https://www.digitalocean.com/community/questions/cannot-connect-with-dev-database-due-to-ssl-issue?answer=67513

  2. https://docs.digitalocean.com/products/databases/postgresql/how-to/connect

  3. 如何将 SSL 证书 (ca-cert) 添加到 node.js 环境变量以连接到 Digital Ocean Postgres 托管数据库?

DO 支持已回复

我了解到您正在尝试使用 SSL 证书连接到数据库。首先,我想让您知道您已将开发数据库附加到您的应用程序“mysite”,而不是生产数据库。但是,您应该能够添加以下环境变量来存储 SSL 证书:

键:CA_CERT 值:${mysitedb.CA_CERT}

添加上述环境变量后,您应该能够使用“CA_CERT”变量在您的应用程序中获取 SSL 证书。此外,您可以通过在控制台中运行以下命令来查看 SSL 证书:

回声 $CA_CERT

感谢您回复我们。这个输出是有意的。要使用该证书的内容,您需要将 env 变量保存到文件或使用应用程序中的方法将其从字符串转换。然后,您可以在配置中指定该文件,并在与数据库的连接中使用证书。

可以在此处找到如何执行此操作的示例: 如何将 SSL 证书 (ca-cert) 添加到 node.js 环境变量以连接到 Digital Ocean Postgres 托管数据库?

如果你有任何疑问,请告诉我们。

感谢您回复我们!

从屏幕截图中,我看到您使用了错误的端口号 5432。您必须使用端口号 25060 才能连接到数据库。

关于 SSL 证书,这里需要注意的一点是,数据库由 DigitalOcean 管理,无法通过云面板生成客户端密钥(私钥)和证书(公钥)。这就是原因,您需要在本地计算机上或从您计划与数据库建立连接的任何客户端生成这些。

这是如何在 Navicat 等客户端上使用 SSL 的示例,您需要在操作系统上下载或安装 OpenSSL,您将使用它来生成客户端密钥文件和客户端证书文件,它们将被称为私有和公共分别键

您需要以下三个文件才能连接

  • 客户端密钥文件
  • 客户端证书文件
  • CA 证书文件

https://www2.navicat.com/manual/online_manual/en/navicat/linux_manual/SSLSettings.html

作为建立连接的指南

  • 从您的客户端或本地计算机生成客户端密钥文件和客户端证书文件
  • 将证书从应用程序控制台复制到任何 .crt 文件并传递该文件以连接到数据库。

以下是如何使用 OpenSSL 生成客户端密钥文件和客户端证书文件: https ://knowledge.digicert.com/solution/SO27347.html

openssl req -x509 -newkey rsa:2048 -keyout client-key.pem -out client-cert.pem -days 3650 -nodes -subj '/CN=localhost'

对于客户端密钥文件、客户端证书和 CA 证书,选择您保存它们的目录位置,然后单击客户端中的“测试”按钮以测试连接。

如果您有任何其他问题,请告诉我们,祝您有美好的一天!

于 2021-09-02T09:36:08.917 回答