MySQLサーバをSSL化し、外部のクライアントからSSL接続で接続する方法

投稿者: | 2017年2月8日

MySQLをSSL化し、外部からセキュアな通信で接続する方法です。
MySQLのインストールかつ証明書は既に作成していることを前提とします。
まずはサーバ側の設定を書き換えてサーバ証明書を設定します。

$ vi /etc/my.cnf

下記の3行を追加します。

ssl-ca=/var/lib/mysql/.ssl/ca.pem
ssl-cert=/var/lib/mysql/.ssl/server-cert.pem
ssl-key=/var/lib/mysql/.ssl/server-key.pem

MySQLを再起動すればサーバ側のSSL化の完了です。

$ /etc/init.d/mysqld restart

続いて、MySQLを外部から接続ができるように設定します。
MySQLはデフォルトのままだとlocalhostからしか接続することができません。
外部から接続するにはuserテーブルにユーザーを追加する必要があります。

mysql> select host from mysql.user;
+-----------------+
| host            |
+-----------------+
| 127.0.0.1       |
| ip-10-250-40-51 |
| ip-10-250-40-51 |
| localhost       |
| localhost       |
| localhost       |
+-----------------+
6 rows in set (0.00 sec)
mysql> grant all privileges on データベース名.* to ユーザー名@"%" identified by 'パスワード' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> select host from mysql.user;
+-----------------+
| host            |
+-----------------+
| %               |
| 127.0.0.1       |
| ip-10-250-40-51 |
| ip-10-250-40-51 |
| localhost       |
| localhost       |
| localhost       |
+-----------------+
7 rows in set (0.00 sec)

これで外部からの接続設定が完了します。
続いてクライアント側からの接続です。
下記のように接続に必要な鍵ファイルを指定すればmysqlコマンドで接続することができます。

> mysql -h ホスト名 -P 3306 --ssl-key=client-key.pem
  --ssl-ca=ca.pem --ssl-cert=client-cert.pem -u ユーザー名 -p

SQLWorkbench等でもサーバで設定した鍵ファイルを指定すれば接続することができます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です