MySQL Server from Community Edition distributions now tries to deploy with SSL support enabled automatically if no SSL options are specified explicitly and it finds any of the ca.pem, server-cert.pem, and server-key.pem files in the data directory. In this case, clients can use a secure connection merely by specifying --ssl on the command line.
今までは--ssl指定するとついでに--ssl-ca, --ssl-cert, --ssl-keyを指定してやらないといけなかったのが、datadirからその辺のファイルが見つかれば指定しなくてもよしなにやってくれるらしい。
あと、サーバー側の--sslはデフォルトで有効状態に。
というわけで、 前回 mysqld --initializeがSSL証明書を作ろうとして失敗したと思っていたもの は、実はSSLを有効化しようとしていた(そして、証明書がdatadirにないので失敗していた)だけだった。
mysqld --initializeで作ったdatadirで起動すると、*.pemファイルはないので、
$ bin/mysqld --no-defaults --initialize-insecure .. $ ll data/*.pem ls: cannot access data/*.pem: No such file or directory $ bin/mysqld_safe --no-defaults mysql> SHOW GLOBAL VARIABLES LIKE '%ssl%'; +---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | | +---------------+----------+ 9 rows in set (0.00 sec) $ bin/mysql --no-defaults -uroot --ssl ERROR 2026 (HY000): SSL connection error: SSL is required but the server doesn't support it
使えない。
mysql_install_dbで作ったdatadirには*.pemがあるので(ただし、mysql_install_db --insecureだと作られない)
$ ./bin/mysql_install_db --no-defaults --basedir=./ --datadir=./data .. $ ll data/*.pem -rw------- 1 mysql mysql 1679 Mar 13 13:27 data/ca-key.pem -rw-r--r-- 1 mysql mysql 1082 Mar 13 13:27 data/ca.pem -rw-r--r-- 1 mysql mysql 1086 Mar 13 13:27 data/client-cert.pem -rw------- 1 mysql mysql 1679 Mar 13 13:27 data/client-key.pem -rw------- 1 mysql mysql 1675 Mar 13 13:27 data/private_key.pem -rw-r--r-- 1 mysql mysql 451 Mar 13 13:27 data/public_key.pem -rw-r--r-- 1 mysql mysql 1086 Mar 13 13:27 data/server-cert.pem -rw------- 1 mysql mysql 1679 Mar 13 13:27 data/server-key.pem $ bin/mysqld_safe --no-defaults mysql> SHOW GLOBAL VARIABLES LIKE '%ssl%'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | ca.pem | | ssl_capath | | | ssl_cert | server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | server-key.pem | +---------------+-----------------+ 9 rows in set (0.00 sec) $ bin/mysql --no-defaults -uroot --ssl mysql> status -------------- bin/mysql Ver 14.14 Distrib 5.7.6-m16, for Linux (x86_64) using EditLine wrapper Connection id: 4 Current database: Current user: root@localhost SSL: Cipher in use is DHE-RSA-AES256-SHA Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.6-m16 Source distribution Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: latin1 Db characterset: latin1 Client characterset: latin1 Conn. characterset: latin1 UNIX socket: /tmp/mysql.sock Uptime: 53 sec Threads: 1 Questions: 13 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.245 --------------
何の面倒なこともなしにSSLが有効化できる。これはいい。
mysql_install_dbからは mysql_ssl_rsa_setup というコマンドを呼んでいるだけなので、これを手で叩いてやれば他の方法でセットアップしてもOK。
$ bin/mysql_ssl_rsa_setup OpenSSL 1.0.1e-fips 11 Feb 2013 Generating a 2048 bit RSA private key ...............+++ ..........+++ writing new private key to 'ca-key.pem' ----- writing RSA key Signature ok subject=/CN=MySQL_Server_5.7.6-m16_Auto_Generated_CA_Certificate Getting Private key Generating a 2048 bit RSA private key ...........................................................................+++ ...........................................................................+++ writing new private key to 'server-key.pem' ----- writing RSA key Signature ok subject=/CN=MySQL_Server_5.7.6-m16_Auto_Generated_Server_Certificate Getting CA Private Key Generating a 2048 bit RSA private key .................+++ ...................+++ writing new private key to 'client-key.pem' ----- writing RSA key Signature ok subject=/CN=MySQL_Server_5.7.6-m16_Auto_Generated_Server_Certificate Getting CA Private Key server-cert.pem: OK client-cert.pem: OK Generating RSA private key, 2048 bit long modulus ............................................................................................................................+++ ............+++ e is 65537 (0x10001) writing RSA key $ ll data/*.pem -rw------- 1 mysql mysql 1679 Mar 13 13:33 data/ca-key.pem -rw-r--r-- 1 mysql mysql 1082 Mar 13 13:33 data/ca.pem -rw-r--r-- 1 mysql mysql 1086 Mar 13 13:33 data/client-cert.pem -rw------- 1 mysql mysql 1679 Mar 13 13:33 data/client-key.pem -rw------- 1 mysql mysql 1675 Mar 13 13:34 data/private_key.pem -rw-r--r-- 1 mysql mysql 451 Mar 13 13:34 data/public_key.pem -rw-r--r-- 1 mysql mysql 1086 Mar 13 13:33 data/server-cert.pem -rw------- 1 mysql mysql 1679 Mar 13 13:33 data/server-key.pem
SSLのセットアップがラクになっていい :)
0 件のコメント :
コメントを投稿