phpMyAdmin や WordPress から MariaDB にセキュア接続する。

 さて、「MariaDB でセキュア接続」が出来たので、自鯖の SQL サーバがセキュアになった。というわけで、 phpMyAdmin と WordPress の設定をそれに合わせて変更する。
 各バージョンは MariaDB 10.2.9 win 32-bit、 phpMyAdmin 4.7.4、 WordPress 4.8.2 で、サーバ機は Windows 7 32-bit HE SP1 である。

 作業に入る前に、 CA 情報を使ったときの SQL サーバのステータスを確認した。コマンドラインで mysql -u root -p --ssl-ca=/path/to/my_ca.crt とやってログインし、 \s で確認:

--------------
mysql  Ver 15.1 Distrib 10.2.9-MariaDB, for Win32 (AMD64)

Connection id:          221
Current database:
Current user:           root@localhost
SSL:                    Cipher in use is DHE-RSA-AES256-SHA
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.2.9-MariaDB-log mariadb.org binary distribution
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    cp932
Conn.  characterset:    cp932
TCP port:               3306
Uptime:                 25 min 57 sec

Threads: 7  Questions: 14327  Slow queries: 18  Opens: 215  Flush tables: 1  Open tables: 209  Queries per second avg: 9.201
--------------

 DHE-RSA-AES256-SHATLS v1.0 の暗号スイートである。 ssl_cipher=TLSv1.2 をセットすると、サーバは have_ssl|DISABLED を返してきた。 TLS v1.2 は使えない。 MariaDB Windows 版が YaSSL でビルドされているからだ
 次に、接続のときには必ずセキュアになるように WordPress の SQL 用 user のsettings を変えてやる。
GRANT SELECT,INSERT,UPDATE,DELETE on *.* to wpuser@localhost IDENTIFIED by 'password' require ssl;
 コマンドラインからの作業を終了。

[phpMyAdmin の件]
 config.inc.php に下記の行を書き加える。 cfg_Servers_ssl を参照。
 自鯖のconfig.inc.php にはこれのせいで既に $cfg['Servers'][$i]['ssl_verify'] = false; が入っていた。当然、この false を true に変更。
   $cfg['Servers'][$i]['ssl'] = true;
   $cfg['Servers'][$i]['ssl_key'] = '/path/to/MySQL.key';
   $cfg['Servers'][$i]['ssl_cert'] = '/path/to/MySQL.crt';
   $cfg['Servers'][$i]['ssl_ca'] = '/path/to/my_ca.crt';
   $cfg['Servers'][$i]['ssl_verify'] = true;

 wpuser@localhost として phpMyAdmin にログイン。ログインできたけれど、更に 2 つのオプションが要求されたので、以下の 2 行を config.inc.php に追記した。
   $cfg['Servers'][$i]['ssl_ca_path'] = '/path/to/';
   $cfg['Servers'][$i]['ssl_ciphers'] = 'DHE-RSA-AES256-SHA';
 これで、 phpMyAdmin から wpuser@localhost として SQL サーバに接続できるようになった。もちろん、 ‘require ssl’ への設定変更はコマンドラインからではなく、 phpMyAdmin からも出来る。

[WordPress の件]
 “Secure DB Connection” を参照した。
 define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL); を wp-config.php に追加する。今回使っているのが、自前 CA なので、 define('MYSQL_SSL_CA', '/path/to/my_ca.crt'); も追加した。

 以上です!!

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください