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

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)