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

MySQLチュートリアル–MySQLサーバーでのSSLの構成と管理

    このブログ投稿では、MySQLホスティングでSSLを構成および管理する際の重要な側面のいくつかを確認します。これには、デフォルト構成、SSLの無効化、MySQLサーバーでのSSLの有効化と適用が含まれます。私たちの観察は、MySQL5.7.21のコミュニティバージョンに基づいています。

    MySQLのデフォルトのSSL構成

    デフォルトでは、MySQLサーバーは常にSSL構成をインストールして有効にします。ただし、クライアントがSSLを使用して接続することは強制されません。サーバーは両方のタイプの接続を許可するため、クライアントはSSLの有無を選択できます。 MySQLサーバーのこのデフォルトの動作を確認する方法を見てみましょう。

    SSLがデフォルトでMySQLサーバーにインストールされて有効になっている場合、通常は次のように表示されます。

    1. MySQLデータディレクトリに*.pemファイルが存在します。これらは、ここで説明するSSLに使用されているさまざまなクライアントおよびサーバーの証明書とキーです。
    2. サーバーの起動中にmysqldエラーログファイルに次のようなメモがあります:
      • [注]データディレクトリでca.pem、server-cert.pem、server-key.pemが見つかりました。それらを使用してSSLサポートを有効にしようとしています。
    3. 「have_ssl」変数の値はYESになります:

    mysql>は「have_ssl」のような変数を表示します;

    + ————— + ——- +

    | Variable_name |価値|

    + ————— + ——- +

    | have_ssl |はい|

    + ————— + ——- +

    MySQLクライアントに関しては、デフォルトでは、常にサーバーとの暗号化されたネットワーク接続を試み、それが失敗した場合は、暗号化されていないモードにフォールバックします。

    >

    つまり、次のコマンドを使用してMySQLサーバーに接続します:

    mysql -h -u -p

    ステータスコマンドを使用して、現在のクライアント接続が暗号化されているかどうかを確認できます:

    mysql>ステータス

    ————–

    mysql Ver 14.14 Distrib 5.7.21、Linux(x86_64)用、EditLineラッパーを使用

    接続ID:75

    現在のデータベース:

    現在のユーザー:[email protected]

    SSL:使用中の暗号はDHE-RSA-AES256-SHA

    現在のポケットベル:stdout

    outfileの使用:”

    区切り文字の使用:;

    サーバーバージョン:5.7.21-ログMySQL Community Server(GPL)

    プロトコルバージョン:10

    接続:TCP/IP経由の127.0.0.1

    …………………………..

    上で強調表示されているSSLフィールドは、接続が暗号化されていることを示しています。ただし、次のコマンドを使用して、SSLなしで接続するようにMySQLクライアントに要求できます。

    mysql -h -u -p –ssl-mode =DISABLED

    mysql>ステータス

    ————–

    接続ID:93

    現在のデータベース:

    現在のユーザー:[email protected]

    SSL:使用されていません

    現在のポケットベル:stdout

    outfileの使用:”

    区切り文字の使用:;

    サーバーバージョン:5.7.21-ログMySQL Community Server(GPL)

    プロトコルバージョン:10

    接続:TCP/IP経由の127.0.0.1

    ……………………………

    サーバーでSSLが有効になっている場合でも、SSLなしでサーバーに接続できることがわかります。

    MySQLチュートリアル-#MySQLサーバーでSSLを構成および管理する方法クリックしてツイート

    MySQLでSSLを無効にする

    デフォルトのオプションである「有効だがオプションのモード」ではなく、MySQLサーバーでSSLを完全にオフにする必要がある場合は、次の操作を実行できます。

    1. MySQLデータディレクトリの*.pem証明書とキーファイルを削除します。
    2. SSLオプションをオフにしてMySQLを起動します。これは、行エントリを追加することで実行できます:

    ssl =0 my.cnfファイル内。

    次のことがわかります:

      • などのmysqldログにはメモがありません。
      • [注]データディレクトリでca.pem、server-cert.pem、server-key.pemが見つかりました。それらを使用してSSLサポートを有効にしようとしています。
    1. 「have_ssl」変数の値は無効になります:

    mysql>は「have_ssl」のような変数を表示します;

    + ————— + ——- +

    | Variable_name |価値|

    + ————— + ——- +

    | have_ssl |無効|

    + ————— + ——- +

    MySQLでSSLを適用する

    MySQLサーバーではSSLがデフォルトで有効になっていますが、強制されておらず、SSLなしでも接続できることがわかりました。

    これで、require_secure_transportシステム変数を設定することで、サーバーがSSL接続のみを受け入れるように強制できるようになります。これは、次のコマンドを使用してMySQLサーバーに接続しようとすることで確認できます。

    mysql -h -u sgroot -p –ssl-mode =DISABLED

    そして、サーバーからの次のエラーメッセージで接続が拒否されることがわかります:

    エラー3159(HY000):–require_secure_transport =ONの間、安全でないトランスポートを使用した接続は禁止されています。

    レプリケーションチャネルに関するSSLの考慮事項

    デフォルトでは、MySQLレプリケーション設定では、スレーブは暗号化せずにマスターに接続します。

    したがって、レプリケーショントラフィックのために安全な方法でマスターに接続するには、スレーブは MASTER_SSL=1;を使用する必要があります。 CHANGEMASTERTO」の一部として マスターに接続するためのパラメーターを指定するコマンド。マスターがrequire_secure_transportを使用してSSL接続を強制するように構成されている場合にも、このオプションは必須であることに注意してください。


    1. Codeigniter-複数のデータベース接続

    2. MySQLでタスクマネージャのデータベースを設計するためのガイド

    3. mysqlのGREATESTに似たSQLServer2008の機能?

    4. トラブルシューティング:MySQL / MariaDBエラー#1044および#1045ユーザーのアクセスが拒否されました