MySQL接続暗号化
最近自鯖をいじっていて、その関連のポストが多くなっているためか、自鯖仲間からよく質問が来ます。
今回はMySQLサーバーとのTLS接続がうまくいかないとのこと。
MySQLはインストールしただけで、デフォルトで接続の暗号化は有効になっているため、サーバー証明書とクライアント証明書などを用意し、/etc/mycnfにパスを書いてやるだけでOKなんですけど。。。?
もしかして置いてあるディレクトリと証明書ファイルの所有権をmysqlにしていない?
試しに同じ症状になるか拙宅サーバーの所有権をrootにしてみたら、なんと問題なくTLS(SSL)接続ができちゃうんですねぇ。💦
mysqlが参照するのでmysqlにしちゃってましたが、それで問題ないのでずっとそれが正解だと思いこんでいました。。。ふ~、勉強になります。。。
*SSLとTLSが混在しますが実態はTLSであり、慣習でSSLも使っています。
mysql -u username -p
ではアクセスできて
mysql -u username -p --ssl-ca=/パス/ca-cert.pem
ではSSLをサポートしていないと怒られるのですね。
では、まずmysql -u username -pで入り込んで
mysql>show global variables like '%ssl%';
でhave_openssl と have_ssl を確認してみてください。
たぶん DISABLED になっているでしょう。
そうであれば何かの間違いでしょうから、一度ナンチャッテ(自前)証明書でよいので、保管場所のディレクトリも含めて作成しなおしてみてください。
あとは /etc/mynf でパスを書くだけですが、もしや skip_ssl が有効になっているとかのオチじゃないでしょうね。www
have_openssl と have_ssl がYESになるまで頑張りましょう!
OKなら mysql> status の SSL: で Not in use が Cipher in use is DHE-RSA-AES128-GCM-SHA256 などに変わっているはずです。
なお、設定によっては
mysql -u username -p --ssl-ca=/パス/ca-cert.pem
ではだめで、以下の方法を試してください。
mysql -u root -p --ssl-mode=required
なぜかは。。。説明が長くて面倒なので尋ねないでね!笑笑
確認のためmysqlに入り込んだのでついでに。。。
mysql> show global variables like 'tls%'; +------------------+-----------------+ | Variable_name | Value | +------------------+-----------------+ | tls_ciphersuites | | | tls_version | TLSv1.2,TLSv1.3 | +------------------+-----------------+
TLSv1.2,TLSv1.3の2つがサポートされています。(それ以前の古いやつはNG)
新しいバージョンから接続を順番に試みるようになっています。(確かそのはずです。💦)
もも三昧
連れ合い出張の朝、ももにとっては試練の日となります。
連れ合いインスタグラム
拙生のインスタ ⇒ こちら
(要ログイン)
HOME