sql >> データベース >  >> RDS >> Mysql

UbuntuでMySQLのSSL/TLSを有効にする方法

    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=mysql
    
    Generating 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接続を有効にするのに役立つことを願っています。

    1. コードを記述せずにODBC接続属性を設定する

    2. SQL Serverの.bakファイルをMySQLにインポートする方法は?

    3. 私のOOW15旅行は完了しました

    4. SQLのチューニング