Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


6.3.10.3 SSL 接続の使用

SSL 接続を有効にするには、セクション6.3.10.2「SSL を使用するための MySQL の構成」で説明するように、SSL サポートを使用して MySQL 配布を構築します。さらに、適切な証明書および鍵ファイルを指定するには、適切な SSL 関連のオプションを使用する必要があります。SSL オプションの完全なリストについては、セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

SSL を使用した接続がクライアントに許可されるように MySQL サーバーを起動するには、セキュアな接続を確立する際に、サーバーで使用される証明書および鍵ファイルを識別するオプションを使用します。

  • --ssl-ca は、認証局 (CA) 証明書を識別します。

  • --ssl-cert は、サーバーの公開鍵証明書を識別します。これをクライアントに送信し、それに含まれる CA 証明書と照合して認証できます。

  • --ssl-key は、サーバーの秘密鍵を識別します。

たとえば、次のようにサーバーを起動します。

shell> mysqld --ssl-ca=ca-cert.pem \
         --ssl-cert=server-cert.pem \
         --ssl-key=server-key.pem

各オプションには、PEM 形式のファイル名が指定されます。必要な SSL 証明書および鍵ファイルを生成する手順については、セクション6.3.10.5「MySQL での SSL 証明書および鍵の設定」を参照してください。MySQL ソース配布を持っている場合は、配布の mysql-test/std_data ディレクトリで、デモ用の証明書および鍵ファイルを使用して設定をテストすることもできます。

クライアント側でも同様オプションが使用されますが、--ssl-cert および --ssl-key は、クライアントの公開鍵と秘密鍵を識別します。認証局の証明書を指定する場合は、サーバーで使用されるときと同じ形式で指定する必要があります。

SSL サポートを使用して MySQL サーバーへのセキュアな接続を確立するために、クライアントが指定する必要があるオプションは、クライアントで使用される MySQL アカウントの SSL 要件によって異なります。(セクション13.7.1.4「GRANT 構文」で、REQUIRE 句の説明を参照してください。)

特別な SSL 要件を持っていないアカウント、または REQUIRE SSL オプションを含む GRANT ステートメントを使用して作成されたアカウントを使用して接続すると仮定します。推奨される SSL オプションセットとして、少なくとも --ssl-cert--ssl-key を付けてサーバーを起動し、--ssl-ca を使用してクライアントを呼び出します。次のように、クライアントはセキュアに接続できます。

shell> mysql --ssl-ca=ca-cert.pem

クライアント証明書も指定されるように要求するには、REQUIRE X509 オプションを使用してアカウントを作成します。そのあと、クライアントは適切なクライアント鍵および証明書ファイルを指定する必要があります。そうしない場合、サーバーは接続を拒否します。

shell> mysql --ssl-ca=ca-cert.pem \
       --ssl-cert=client-cert.pem \
       --ssl-key=client-key.pem

SSL の使用を回避し、その他の SSL オプションをオーバーライドするには、--ssl=0 またはシノニム (--skip-ssl--disable-ssl) を使用してクライアントプログラムを呼び出します。

shell> mysql --ssl=0

クライアントは Ssl_cipher ステータス変数の値をチェックすることで、サーバーとの現在の接続で SSL が使用されているかどうかを確認できます。SSL が使用されている場合は、値が空以外になります。それ以外の場合は、空になります。例:

mysql> SHOW STATUS LIKE 'Ssl_cipher';
+---------------+--------------------+
| Variable_name | Value              |
+---------------+--------------------+
| Ssl_cipher    | DHE-RSA-AES256-SHA |
+---------------+--------------------+

mysql クライアントの場合は、代わりに STATUS または \s コマンドを使用して、SSL 行をチェックすることもできます。

mysql> \s
...
SSL: Cipher in use is DHE-RSA-AES256-SHA
...

または、

mysql> \s
...
SSL: Not in use
...

C API を使用すると、アプリケーションプログラムで SSL を使用できます。

  • セキュアな接続を確立するには、mysql_real_connect() を呼び出す前に、mysql_ssl_set() C API 関数を使用して、適切な証明書オプションを設定します。セクション23.8.7.68「mysql_ssl_set()」を参照してください。

  • 接続が確立されたあとに、SSL が使用中であるかどうかを判断するには、mysql_get_ssl_cipher() を使用します。NULL 以外の戻り値は、セキュアな接続であることを示し、暗号化に使用される SSL 暗号の名前を示します。NULL の戻り値は、SSL が使用されていないことを示します。セクション23.8.7.33「mysql_get_ssl_cipher()」を参照してください。

レプリケーションでは C API が使用されるため、マスターサーバーとスレーブサーバー間でセキュアな接続を使用できます。セクション17.3.7「SSL を使用してレプリケーションをセットアップする」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.