通过AWS弹性负载均衡器无法与MySQL容器进行SSL加密连接

时间:2017-12-08 14:38:50

标签: mysql amazon-web-services ssl docker amazon-elb

我正在尝试与在AWS VPC上运行的MySQL Docker服务建立SSL加密连接(由Docker for AWS云形成模板设置)。弹性负载均衡器配置为重定向端口3306.只要没有打开SSL(添加AWS自己的证书(ACM))或连接到容器(例如,通过使用MySQLWorkbench,mysql-client,...)就没有问题。我给ELB监听器的自定义证书)。如果启用了SSL,客户端将开始挂起/冻结,而不会返回正确的错误。我从ACM添加了ca-certs,生成了我自己的证书(有或没有为客户端添加附加密钥/证书)但似乎没有解决我的问题。

现在我很清楚这个设置并不常见。我想这样做的标准方法是配置MySQL-Server本身。 AFAIK,在这种情况下只有客户端和ELB之间的连接是加密的,但我不明白为什么这会导致问题?

我很感激答案!

1 个答案:

答案 0 :(得分:2)

在MySQL的客户端/服务器协议中,服务器首先进行会话。它宣传其功能(包括它是否支持SSL)。然后客户端请求连接切换到SSL模式。只有这样才能进行SSL协商。

因此,无法在MySQL前卸载SSL。

您的连接挂起,因为客户端正在等待来自服务器的初始数据包,而ELB正在等待客户端开始协商SSL - 因为与MySQL客户端/服务器协议不同,客户端首先在标准SSL协商上进行讨论

您必须在MySQL服务器上拥有证书,而不是ELB上的证书才能使用。

AWS 网络负载均衡器是一种更适合公开MySQL的解决方案,但您仍然需要MySQL服务器本身的SSL证书。