2017-12-08 9 views
1

AWS VPCで動作するMySQL DockerサービスへのSSL暗号化接続を確立しようとしています(Docker for AWSクラウド形成テンプレートによる設定)。 SSLがオンになっていない限り(AWSの独自の証明書(ACM)を追加するか、またはSSLを有効にしない限り)、コンテナに接続するのに問題はありません(たとえば、MySQLWorkbench、mysql-clientなどを使用して)私のカスタム証明書をELBリスナーに送信します)。 SSLが有効な場合、クライアントは適切なエラーを返さずに、ハングアップ/フリーズを開始します。 ACMのca-certsを追加し、独自の証明書を生成しました(クライアントのためにadditonal key/certを付けてもしなくても)。しかし何も私の問題を解決することはできません。AWS弾性ロードバランサ上でMySQLコンテナへのSSL暗号化接続ができません

今私は、この設定はそれほど普通ではないという事実をよく知っています。私はこれを行う標準的な方法は、MySQLサーバー自体を構成することだと思います。 AFAIK、この場合、クライアントとELB間の接続のみが暗号化されていますが、なぜこの問題が発生するのか分かりません。

私は答えに感謝しています!

+0

MySQLは、単にそのタイプのロードバランサの背後で実行するようには設計されていませんでした。ロードバランシングされたMySQLが必要な場合は、AWS Auroraを調べる必要があります。 –

答えて

1

MySQLのクライアント/サーバープロトコルでは、サーバーが最初に会話します。その機能(SSLをサポートするかどうかを含む)をアドバタイズします。次に、クライアントは、接続がSSLモードに切り替わることを要求します。その後、SSL交渉が行われます。

このため、MySQLの前でSSLをオフロードすることはできません。

MySQLクライアント/サーバープロトコルとは異なり、クライアントが最初に標準のSSLで話すため、クライアントがSSLをネゴシエートするのをELBが待機している間に、クライアントがサーバーからの最初のパケットを待機しているため、ネゴシエーション。

これが機能するには、ELBではなく、MySQLサーバ上で証明書が必要です。

AWS ネットワークロードバランサはMySQLを公開するより適切なソリューションですが、依然としてMySQLサーバー自体にSSL証明書が必要です。

+0

@Michael -sqlbot&Marc Bありがとうございました - 私はついにそれを通常の方法で行いました。ポートをリダイレクトしてMySQLサーバー自体の設定を行うだけでした。 – philologos

関連する問題