【问题标题】:SSL connection error when trying to connect to mysql Aurora via the mysql CLI尝试通过 mysql CLI 连接到 mysql Aurora 时出现 SSL 连接错误
【发布时间】:2015-08-13 22:48:51
【问题描述】:

我会先说当我不尝试通过 SSL 时,我可以连接到数据库实例。

我在这里遵循本指南

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connect.html

我已确保数据库实例是面向公众的。

VPC的安全组有如下规则:

Type Protocol Port Range Source
MySQL/Aurora (3306) TCP (6) 3306 my_ip_address/32
MySQL/Aurora (3306) TCP (6) 3306 sg-security_group_name

其中 security_group_name 是我的 EC2 集群的安全组。

我正在使用我的极光集群的集群端点。我已经删除了端口。我使用自制软件在我的机器上安装了 mysql。这是我在本地机器(macbook)上尝试的命令:

mysql -h blah-database-cluster.cluster-dfgdgfd.us-east-1.rds.amazonaws.com --ssl-ca=rds-ssl-ca-cert.pem --ssl-verify-server-cert

rds-ssl-ca-cert.pem 是我从这里下载的文件:

http://s3.amazonaws.com/rds-downloads/rds-ssl-ca-cert.pem

我得到错误:

ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)

我尝试过创建一个新实例,重新启动等,但没有任何乐趣。我的安全组是否需要某种 https 规则?

编辑:

进一步的线索。当我在本地运行 mysql --ssl 时,它不会出错。但是当我执行 mysql show_variables 时,它显示 SSL false 并且 have_ssl 和 have_open_ssl 变量不存在。这可能是问题吗?我通过 Mac 的自制包管理器安装了本地 mysql。

新编辑:

我重新安装了 mysql(之前从 brew 安装),现在直接从 oracle 安装,当我尝试连接它时给出不同的错误 - SSL 连接错误:ASN:其他签名确认错误

【问题讨论】:

  • 它绝对不在安全组中,因为 MySQL(与 http 不同)具有协商使用 SSL 的机制,并且不需要单独的端口。出于好奇,您在连接时使用的是完整的 DNS 主机名,是吗?如果省略 --ssl-verify-server-cert 会发生什么?
  • @Michael-sqlbot 是的,我使用的是完整的主机名。如果我省略验证服务器证书,我会得到同样的错误。如果我省略 ssl complete 并尝试一个普通的 mysql 命令行连接,我可以进入。我认为这意味着我的客户端 mysql 和 ssl 无法正常工作。我注意到 have_ssl 和 have_open_ssl 变量也不存在
  • 您本地机器上的时间是否正确?时钟漂移会导致 SSL 出错。
  • @MikeRyan 是的,它是正确的。它与服务器处于不同的时区,但本地时间是正确的。
  • 好的,时区不是问题。如果您直接连接到数据库节点端点之一,它是否有效?即不是集群端点。

标签: mysql ssl amazon-web-services amazon-rds amazon-aurora


【解决方案1】:
  1. 目前,AWS Aurora 文档链接到要使用的过期 SSL 证书,因此存在问题。 AWS 支持人员已确认这一点。改用这个:https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem

  2. 即使使用该证书,在使用 mysql -h 连接的命令行上通过 SSL 连接到集群端点仍然不起作用。如果我奇怪地从集群端点更改为实例端点,它会起作用。

  3. 奇怪的是,mysql 工作台确实通过 ssl 连接到实例端点和集群端点。

【讨论】:

  • 同样的问题...集群无法连接,实例正常。
【解决方案2】:

如果您不使用 SSL,请使用带有 --skip-ssl 选项的 mysql。如果没有任何帮助升级您的 mysql 客户端

【讨论】:

  • 您的 my.cnf 中可能还有其他一些 ssl 选项会导致同样的失败。您可以使用 --no-defaults 忽略 my.cnf 文件,例如: mysql --no-defaults -h yourserver.us-west-2.rds.amazonaws.com --ssl-ca=/etc/app-ssl-rds /rds-ca-2015-us-west-2-bundle.pem -uyouruser -p
【解决方案3】:

docs 看来,对 SSL 连接的实例端点的限制是与证书相关的安全约束。

Amazon RDS 会在 Amazon RDS 预置实例时创建 SSL 证书并将证书安装在数据库实例上。这些证书由证书颁发机构签署。 SSL 证书包含数据库实例终端节点作为 SSL 证书的公用名 (CN),以防止欺骗攻击。因此,您无法使用数据库集群终端节点通过 SSL 连接到数据库集群的主实例。

【讨论】:

  • 仅供参考,在我创建此问题时文档中没有。
  • 没问题。我偶然发现了它,并将简介放在这里,以便以后找到它。
【解决方案4】:
猜你喜欢
  • 1970-01-01
  • 2019-07-25
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 2015-07-02
  • 2016-09-28
  • 1970-01-01
  • 2014-06-17
相关资源
最近更新 更多