MySQLを使用すると、ユーザーはSSL/TLS証明書を使用してデータベースに安全に接続できます。この記事では、MySQL SSL構成–UbuntuでMySQLのSSL/TLSを有効にする方法について説明します。
MySQLでSSL/TLSを有効にする方法
MySQLでSSL接続を設定する手順は次のとおりです。
1。 MySQLをインストールする
ターミナルを開き、次のコマンドを実行してMySQLをインストールします。
$ sudo apt-get update $ sudo apt-get install mysql-client
ボーナスリード:すべてのテーブルのMySQL変更照合
2。 SSLステータスを確認する
ルートとしてMySQLにログインします
$ mysql -uroot -p
ルートパスワードの入力を求められます。ログイン後、次のコマンドを入力して、現在のSSL/TLSステータスを確認します
mysql> SHOW 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 | | +---------------+----------+
have_openssl およびhave_ssl 両方ともDISABLED値を持っています。これは、MySQLでSSLが有効になっていないことを意味します。
ボーナスリード:フォローするトップデータベースブログ
3。 SSL/TLS証明書を生成する
次に、SSL / TLS証明書を生成し、MySQLサーバーがそれらの場所を指すようにする必要があります。通常、人々はopensslを使用してSSL証明書を生成し、それをMySQLサーバーのSSLファイルのデフォルトの場所である/ var / lib/mysqlに移動します。
ただし、MySQL 5.7以降のバージョンには、このプロセスを簡素化するためのユーティリティmysql_ssl_rsa_setupがすでに付属しています。 SSL証明書を生成し、それらを/ var / lib/mysqlに保存します。
これらのファイルを読み取るにはmysqlプロセスが必要なので、 mysqlを作成します。 以下に示すように、これらのファイルの所有者として。
次のコマンドを実行してSSL証明書を生成します
$ sudo mysql_ssl_rsa_setup --uid=mysqlGenerating a 2048 bit RSA private key ...................................+++ .....+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key ......+++ .................................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key ......................................................+++ .................................................................................+++
writing new private key to 'client-key.pem'
-----
次のコマンドを実行して、生成されたファイルを確認できます
$ ls -all /var/lib/mysql/*.pem
次のようなものが表示されます
256740 4 -rw-r--r-- 1 mysql mysql 1078 May 1 12:24 /var/lib/mysql/server-cert.pem 256735 4 -rw------- 1 mysql mysql 1675 May 1 12:24 /var/lib/mysqlsql/ca-key.pem 256739 4 -rw-r--r-- 1 mysql mysql 451 May 1 12:24 /var/lib/mysqlsql/public_key.pem 256741 4 -rw------- 1 mysql mysql 1689 May 1 12:24 /var/lib/mysqlsql/client-key.pem 256737 4 -rw-r--r-- 1 mysql mysql 1064 May 1 12:24 /var/lib/mysqlsql/ca.pem 256743 4 -rw-r--r-- 1 mysql mysql 1048 May 1 12:24 /var/lib/mysqlsql/client-cert.pem 256736 4 -rw------- 1 mysql mysql 1625 May 1 12:24 /var/lib/mysqlsql/private_key.pem 256738 4 -rw------- 1 mysql mysql 1615 May 1 12:24 /var/lib/mysqlsql/server-key.pem
これらは、認証局、MySQLサーバー、およびMySQLクライアントのSSL証明書ファイルと秘密鍵のペアです。
ボーナスリード:MySQLWorkbenchの上位の代替案
4。 MySQLサーバーでSSL接続を有効にする
次に、MySQLサーバーを再起動して、MySQLでSSL/TLSを有効にします。
$ sudo systemctl restart mysql
MySQLサーバーは、起動時に/ var / lib/mysqlでSSL証明書ファイルを自動的に検索します。したがって、MySQL構成ファイルでそれらの場所を手動で指定する必要はありません。
ボーナスリード:MySQLクエリキャッシュを有効にする方法
5。 SSL接続を確認する
前と同じようにMySQLにログインし(ステップ2)、次のコマンドを実行します。
SHOW VARIABLES LIKE '%ssl%'; Output +---------------+-----------------+ | 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 | +---------------+-----------------+
これで、 have_opensslが見つかります およびhave_ssl 変数はYESです。 ssl_ca 、 ssl_cert およびssl_key 適切な値が入力されます。
接続の詳細を確認することもできます。
mysql>\s
--------------
. . .
SSL: Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection: 127.0.0.1 via TCP/IP
. . .
--------------
6。リモート接続用のSSLの構成(オプション)
MySQLサーバーにリモート着信接続がある場合は、リモート接続に対してSSLを有効にすることができ、MySQLサーバー構成ファイルを変更することでSSLを必須にすることもできます。
ターミナルを開き、次のコマンドを実行してMySQL構成を開きます。
$ sudo vi /etc/mysql/my.cnf
図のように、2つの!includedirステートメントの下に[mysqld]コードブロックを追加します。
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
# Require clients to connect either using SSL
# or through a local socket file
require_secure_transport = ON
bind-address = 0.0.0.0
最後の行では、リモート接続を許可するためにbind-addressを0.0.0.0に設定しています。すでにリモート接続を有効にしている場合は、追加する必要はありません。
MySQLサーバーを再起動して変更を適用します。今後、MySQLにはSSLが必要になります。
リモート接続の場合は、デフォルトの3306ではなくポート443を開くことを忘れないでください。これは、SSL接続が3306ではなくポート443で行われるためです。
この記事がMySQLでSSL/TLS接続を有効にするのに役立つことを願っています。