MySQLクライアントでTLSを有効にする方法を徹底解説
TLS(Transport Layer Security)は、SSL(Secure Sockets Layer)としても知られるプロトコルで、トランスポート層のセキュリティを提供します。
MySQLクライアントとサーバー間の接続が暗号化されていない場合、ネットワークにアクセスできる第三者がすべての通信を監視し、クライアントとサーバーの間で送受信されるデータを閲覧できてしまいます。安全な方法でネットワーク経由の情報をやり取りしたい場合、暗号化されていない接続は許容できません。
データを読み取れないようにするには、暗号化を使用する必要があります。暗号化アルゴリズムには通常、暗号化メッセージの順序変更やデータのリプレイ攻撃など、多くの既知の攻撃に耐性を持たせるためのセキュリティ要素が組み込まれています。MySQLは、クライアントとサーバーの両方がTLSプロトコルを使用する暗号化接続をサポートしています。ただし、MySQLは暗号化強度が弱いSSLプロトコルは暗号化接続には使用しません。
TLSは暗号化アルゴリズムを利用して、公開ネットワーク経由で受信したデータが信頼できるものであることを保証します。データの改ざん・損失・リプレイを検出する仕組みを複数備えており、さらにX.509標準に基づくアルゴリズムによってアイデンティティ検証(認証)も実現しています。
TLSを有効にする手順
MySQLは接続単位で暗号化を行います。特定のユーザーに対する暗号化は、任意または必須として設定できるため、アプリケーションの要件に応じて、暗号化接続と非暗号化接続を使い分けることが可能です。
以下に、MySQLクライアントでTLSを有効にする方法を解説します。
1. サーバー側の設定
- サーバー起動時に、設定ファイルの
ssl-certおよびssl-keyパラメータを指定します。 - 証明書やキーは、OpenSSLを使用して署名・生成されます。
- MySQLの
mysql_ssl_rsa_setupツールを使ってキーを生成することもできます。mysql_ssl_rsa_setup --datadir=./certs
- パラメータが正しく設定されていれば、起動時にセキュアな接続が有効化されたことが出力として表示されます。
2. 証明書・キー・CAの再ロード
- サーバーインスタンスで
ALTER INSTANCE RELOAD TLSステートメントを実行します。これにより、サーバーの再起動なしに証明書を更新できます。 - 新しくロードされた証明書・キー・CAは、既存の接続が正常に確立された後に反映されます。
3. クライアント側の設定
- MySQLクライアントはデフォルトで暗号化接続の確立を試みます。サーバーが暗号化接続をサポートしていない場合は、自動的に非暗号化接続へフォールバックします。
- クライアントの接続動作は
--ssl-modeパラメータで変更できます。--ssl-mode=REQUIRED(暗号化接続が必須であることを指定)
4. 認証の有効化
ssl-caパラメータが指定されていない場合、クライアント・サーバーともにデフォルトでは認証を行いません。認証を有効にするには、以下の設定が必要です。
- サーバーで
ssl-certおよびssl-keyパラメータを指定します。 - MySQLクライアントで
--ssl-caパラメータを指定します。 - MySQLクライアントで
--ssl-modeをVERIFY_CAに設定します。 - サーバーに設定された証明書(
ssl-cert)は、クライアントの--ssl-caパラメータで指定したCAによって署名されている必要があります。 - 署名が一致しない場合、認証は失敗します。
5. サーバーによるクライアントの認証
- サーバーで
ssl-cert、ssl-key、ssl-caパラメータを指定します。 - クライアントで
--ssl-certおよび--ssl-keyパラメータを指定します。 - サーバー側とクライアント側に設定された証明書は、サーバーで指定した
ssl-caによって署名されている必要があります。 - サーバーからクライアントへの認証は任意です。TLSハンドシェイク時にクライアントが証明書を提示しなくても、TLS接続自体は確立されます。
6. 接続の暗号化状況を確認
最後に、現在の接続が実際に暗号化されているかどうかを必ず確認しましょう。これにより、設定が正しく反映されていることを検証できます。
-
【Windows】TLS接続の失敗・タイムアウト問題の原因と3つの回避策
これまでの記事で、TLSハンドシェイクの仕組みと、それが失敗するケースについて解説してきました。実は多くのTLS障害は、Microsoftがセキュリティ修正を実施したことがきっかけで発生しています。セキュリティ更新プログラム「CVE-2019-1318」は、TLSおよびSSLに関する脆弱性を修正するために提供されましたが、その結果、TLS接続が断続的に失敗したり、接続に長時間かかってタイムアウトするという現象が発生しました。本記事では、WindowsシステムにおけるTLS障害とタイムアウトの回避策を詳しく紹介します。この問題でよく発生するエラーこの問題が原因で、以下のようなエラーが頻繁に報告さ
-
【解決】Wi-Fiが「接続済み・インターネットアクセスなし」になる原因とDHCP設定などの対処法7選
ワイヤレスインターネット接続をセットアップすれば、正しいパスワードやログイン情報さえ入力すれば、どのデバイスでもインターネットにアクセスできるはずです。しかし、Wi-Fiには接続できているのに、なぜかインターネットにアクセスできないというトラブルに悩まされるユーザーは少なくありません。この記事で扱うケースでは、ユーザーはワイヤレスWi-Fiネットワークを見つけて正常に接続できるものの、Mozilla Firefox、Chrome、Internet Explorerなどどのブラウザでもページを開くことができません。インターネット接続を必要とするアプリも動作しません。確認できるのは、システムトレイ