Quantcast
Channel: 日々の覚書
Viewing all articles
Browse latest Browse all 581

MySQL 5.7.8で追加されたrequire_secure_transportでSSL接続を強要できる

$
0
0
my.cnfの[mysqld]セクションに require_secure_transportと書いておくと、SSL接続を強要できるらしい。

MySQL :: MySQL 5.7 Reference Manual :: 5.1.4 Server System Variables


# service mysqld restart --require_secure_transport
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]

$ mysql -uroot

mysql> SELECT @@require_secure_transport;
+----------------------------+
| @@require_secure_transport |
+----------------------------+
| 1 |
+----------------------------+
1 row in set (0.00 sec)

( ´-`).oO(余談だけど、/etc/init.d/mysqld [re]startの後ろにロングオプションつけると、mysqld_safeにそのまま渡してくれるんですよこれ豆知識。


mysql> status
--------------
mysql Ver 14.14 Distrib 5.7.8-rc, for Linux (x86_64) using EditLine wrapper

Connection id: 4
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.8-rc MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 1 min 28 sec

Threads: 1 Questions: 6 Slow queries: 0 Opens: 105 Flush tables: 1 Open tables: 98 Queries per second avg: 0.068
--------------

UNIXソケット接続の場合はSSLもへったくれもないのでこれは制限されない。


$ mysql -uroot --protocol=tcp

mysql> STATUS
--------------
mysql Ver 14.14 Distrib 5.7.8-rc, for Linux (x86_64) using EditLine wrapper

Connection id: 8
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.8-rc MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 5 min 54 sec

Threads: 1 Questions: 22 Slow queries: 0 Opens: 107 Flush tables: 1 Open tables: 100 Queries per second avg: 0.062
--------------

MySQL 5.7から、コマンドラインクライアントもデフォルトで--sslを使おうとするので、特に何も指定しなくても勝手にSSLでつなぎに行く。
これを明示的に無効にしてやる(または、5.6以前のコマンドラインクライアントは--sslをつけない限りSSLを使おうとしないので、そっちで接続しようとすると)

$ mysql -uroot --protocol=tcp --skip-ssl
ERROR 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

おお、これは良い感じだ。

CREATE USERGRANTステートメントのREQUIRE SSLがユーザー単位なのに対し、こっちはサーバー全体で一括指定。SET GLOBALによるオンラインの変更も可能。

…まさかこれ暗黙のデフォルトで1にしたりとかしないですよねー? (・∀・)ゞ

Viewing all articles
Browse latest Browse all 581

Trending Articles