AWS弹性负载均衡器无法通过SSLencryption连接到MySQL容器

我试图build立一个SSLencryption连接到AWS VPC上运行的MySQL Docker服务(由Docker for AWS云形成模板设置)。 弹性负载平衡器被configuration为redirect端口3306.只要SSL没有打开(添加AWS自己的证书(ACM)或添加AWS自己的证书(ACM)),连接到容器(例如通过使用MySQLWorkbench,mysql-client,..)我的自定义证书ELB侦听器)。 在启用SSL的情况下,客户端开始挂起/冻结,而不会返回适当的错误。 我从ACM中添加了ca-certs,生成了我自己的证书(有和没有为客户添encryption钥/证书),但似乎没有任何东西能够解决我的问题。

现在我清楚的知道这个设置并不是那么平常。 我猜这样做的标准方式是configurationMySQL服务器本身。 AFAIK,在这种情况下,只有客户端和ELB之间的连接被encryption,但我不明白为什么这会导致一个问题?

我很感谢答案!

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

出于这个原因,不可能在MySQL之前卸载SSL。

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

你必须在MySQL服务器上有一个证书,而不是在ELB上,这样才能工作。

AWS networking负载平衡器对于公开MySQL是更合适的解决scheme,但是您仍然需要MySQL服务器本身的SSL证书。