【问题标题】:SSL connection issues between go Scratch container and PG container. How to resolve? [closed]go Scratch 容器和 PG 容器之间的 SSL 连接问题。如何解决? [关闭]
【发布时间】:2019-05-13 15:15:01
【问题描述】:

更新

我相信我通过此连接解决了这个问题...

db, err := gorm.Open("postgres", "host='postgres'&user:docker&port=5432&dbname='docker'&password='password'&sslmode=disable")

Docker PG 容器和 GoLang Scratch 容器之间的连接被拒绝。错误是:

============   exiting ==========
todo_1      | pq: SSL is not enabled on the server
todo_1      | panic: failed to connect database e

The docker-compose.yml file

The main.go file which is panicking

Complete code base with Docker files

其他说明:

  • 我正在使用 GORM 库连接 PG。

请求: 请查看代码并提供一些关于在何处以及如何解决此 SSL 问题的提示。

【问题讨论】:

标签: postgresql docker go docker-compose go-gorm


【解决方案1】:

您可以按照代码查找有关如何使用 Postgres 调用的文档。

  • github.com/jinzhu/gorm 调用
  • 调用的数据库/sql
  • lib/pq

还有 lib/pq documents it's usage 包括:

  • dbname - 要连接的数据库的名称
  • user - 登录的用户
  • password - 用户的密码
  • host - 要连接的主机。以 / 开头的值用于 unix 域套接字。 (默认为本地主机)
  • port - 要绑定的端口。 (默认为 5432)
  • sslmode - 是否使用 SSL(默认是 require,这不是 libpq 的默认值)
  • fallback_application_name - 如果未提供,则回退到的 application_name。
  • connect_timeout - 连接的最大等待时间,以秒为单位。零或未指定意味着无限期等待。
  • sslcert - 证书文件位置。该文件必须包含 PEM 编码数据。
  • sslkey - 密钥文件位置。该文件必须包含 PEM 编码数据。
  • sslrootcert - 根证书文件的位置。该文件必须包含 PEM 编码数据。

还有:

  • 禁用 - 无 SSL
  • 要求 - 始终使用 SSL(跳过验证)
  • verify-ca - 始终使用 SSL(验证服务器提供的证书是否由受信任的 CA 签名)
  • verify-full - 始终使用 SSL(验证服务器提供的证书是否由受信任的 CA 和服务器主机名签名
    匹配证书中的那个)

因此,您对没有 SSL 的数据库的连接字符串很简单:

db, err := gorm.Open("postgres", "host='postgres' port=5432 user=docker dbname='docker' password='password' sslmode=disable")

或者您可以使用 SSL 密钥配置 Postgres。这不那么简单,但要实现,您需要修改 postgresql.conf 文件以启用 ssl 设置并将 TLS 密钥对挂载为卷,或者最好是使用 swarm 模式的密钥。可以在以下位置找到如何执行此操作的众多示例之一:https://gist.github.com/likwid/86193ef581c530ea55d3

【讨论】:

  • 如果数据库容器未公开,启用 SSL 有什么好处?留在默认的桥接网络中应该是相当安全的。
  • @FranklinYu 这取决于您的本地环境以及您要防御的攻击。如果容器使用覆盖网络部署在不同的主机上,而没有配置 IPSec,那么就会存在网络嗅探风险。否则,我相信大多数都不会加密,因为我能想到的任何攻击都已经拥有对主机的 root 访问权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2020-10-26
  • 1970-01-01
  • 2021-02-07
相关资源
最近更新 更多