LoginSignup
2
3

More than 3 years have passed since last update.

初めて、MySQLもSSLで接続してみた。

Posted at

初めてMySQLをSSL接続してみた。

ほんとにAWSと利用して学習の学習はやりやす。ドキュメントが豊富で学習がしやすい。

本日は初めてMySQLへSSL接続をしてみたので、記録に残しておきます。

tcpdumpでキャプチャー

tcpdumpでMySQLサーバに流れてくるクエリをみる

sudo yum install -y tcpdump
sudo tcpdump -tttt -l -i eth0 -A -n -s 0 dst port 3306 | grep -iE "select|update|delete|insert"

このコマンド一発でSQL文を観測することができます!!

.....I......INSERT INTO books VALUES('210', 'Tom', '', 'hamasaki', 30.75, 0, 1995, 'What a cool book.', 20)

MySQLのSSLはUserに対してSSLの利用を要求する形で設定する。という認識でよろしいのかな?

SSLを利用する

MySQL DB インスタンスで SSL を使用する
私はAWSのRDS,MySQL エンジンバージョン5.7.22を利用していましたが、MySQL 5.7以降のコマンドではエラーが出てしまい、MySQL5.6以前の方のコマンドで実行しました。

手順1 証明書をダウンロードする
手順2 MySQLに接続して、ユーザへSSLの利用要求を設定する

# wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
# mysql -h <endpoint> --ssl-ca=/rds-combined-ca-bundle.pem --ssl-mode=VERIFY_IDENTITY -u <Adminuser> -D <databasename> -p
Unknown value to --ssl-mode: 'VERIFY_IDENTITY'. Use --ssl-mode=REQUIRED
# mysql -h <endpoint> --ssl-ca=/rds-combined-ca-bundle.pem --ssl-verify-server-cert -u <Adminuser> -D <databasename> -p
Enter password:
Welcome to the MySQL monitor.
mysql> GRANT USAGE ON *.* TO '<Adminuser>'@'%' REQUIRE SSL; 
# mysql -u <Adminuser> -h <endpoint> --ssl-ca=/rds-combined-ca-bundle.pem --ssl-verify-server-cert -p<password> <databasename> < insert.sql

これだけでSQL文が平文で流れることがありません。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3