【问题标题】:Trying to connect to production Pgsql DB but got connection time out (0x0000274C/10060)尝试连接到生产 Pgsql 数据库但连接超时 (0x0000274C/10060)
【发布时间】:2021-10-29 21:40:25
【问题描述】:

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

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

数据库:postgresql 连接工具:TablePlus

更新

我的网站是 SSL 的

直接在 DO 上检查,我的帐户中没有存储任何证书

【问题讨论】:

  • 我不认为 SSL 会阻止你,因为错误是你缺少 SSL 证书或类似的东西,你不能直接连接到它,所以我假设你没有打开端口或类似的,但我不知道应用程序是如何工作的。

标签: laravel postgresql digital-ocean table-plus digital-ocean-apps


【解决方案1】:

所以几天后我放弃并转而使用 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. How to add an SSL certificate (ca-cert) to node.js environment variables in order to connect to Digital Ocean Postgres Managed Database?

已回复支持

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

键:CA_CERT 值:${mysitedb.CA_CERT}

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

回显 $CA_CERT

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

可以在此处找到如何执行此操作的示例: How to add an SSL certificate (ca-cert) to node.js environment variables in order to connect to Digital Ocean Postgres Managed Database?

如果您有任何问题,请告诉我们。

感谢您回复我们!

从屏幕截图中,我看到您使用的端口号不正确 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 证书,选择 您保存它们的目录位置,然后单击“测试”按钮 您的客户端来测试连接。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2021-05-13
    • 1970-01-01
    相关资源
    最近更新 更多