【发布时间】: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