さて、「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-SHA
は TLS 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');
も追加した。
以上です!!
「phpMyAdmin や WordPress から MariaDB にセキュア接続する。」への1件の返信
[…] […]