使用 SSL 443 而不是 3306 访问 rds MySql db

Posted

技术标签:

【中文标题】使用 SSL 443 而不是 3306 访问 rds MySql db【英文标题】:Accessing rds MySql db with SSL 443 instead of 3306 【发布时间】:2014-06-16 02:35:34 【问题描述】:

我正在尝试仅通过 443 而不是 3306 访问我的 rds mysql db。

在工作台上启用 ssl 选项并输入 mysql-ssl-ca-cert.pem 的路径后,我尝试在我的安全组上禁用 tcp 3306 以确保它使用 443 连接,但它没有。

我可以使用下面的 mysql 命令行进行连接,但是一旦我在安全组上禁用 tcp 443,它又会失败 mysql -h myinstance.c9akciq32.rds-us-east-1.amazonaws.com --ssl_ca=rds-ssl-ca-cert.pem

亚马逊文档指出: Amazon RDS 中的 SSL 支持严格用于加密客户端和数据库实例之间的连接;不应该依赖它来验证服务器。

这是否意味着我只能通过 3306 而不是 443 向 mysql db 进行身份验证,但数据在传输过程中会被加密?

我的问题是我的客户不会在他们的防火墙上打开 3306 出站但 443 当然是打开的。任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

您混淆了 SSL 和 HTTPS。端口 443 是 default port for HTTPS connections。 MySQL 使用 3306 代替(并且可以通过此端口或任何其他端口使用 SSL 来加密连接)。因此,为 MySQL 连接设置 SSL 加密不会影响使用的端口。

为了使用与标准端口不同的端口,您必须重新配置 MySQL 服务器,而对于 RDS 实例,您可能无法做到这一点。

可以使用隧道来避开默认端口。在这种情况下,您必须打开一个 SSH 隧道(MySQL Workbench 可以为您执行此操作,或者您使用外部程序,如 Windows 上的 putty 或 *nix 上的 ssh 等操作系统)。有了该隧道(默认情况下使用端口 22,但如果对您很重要,可以为任何其他端口配置),然后您可以将访问从本地端口(此处为 3306,但可以是任何端口)转发到远程端口(可以也可以)。但是,这需要远程端的 SSH 服务器。

【讨论】:

以上是关于使用 SSL 443 而不是 3306 访问 rds MySql db的主要内容,如果未能解决你的问题,请参考以下文章

nginx https必须是443吗

与远程服务器进行 SSL 握手期间出错

Citrix DDC添加443端口证书通过SSL加密访问

AWS - 无法通过 443 端口访问 EC2 实例

firewalld拦截,导致安装ssl证书后https无法访问

apache安装了ssl,现要将80端口的http访问重定向到443端口的https,怎么办?