このブログ投稿では、MySQLホスティングでSSLを構成および管理する際の重要な側面のいくつかを確認します。これには、デフォルト構成、SSLの無効化、MySQLサーバーでのSSLの有効化と適用が含まれます。私たちの観察は、MySQL5.7.21のコミュニティバージョンに基づいています。
MySQLのデフォルトのSSL構成
デフォルトでは、MySQLサーバーは常にSSL構成をインストールして有効にします。ただし、クライアントがSSLを使用して接続することは強制されません。サーバーは両方のタイプの接続を許可するため、クライアントはSSLの有無を選択できます。 MySQLサーバーのこのデフォルトの動作を確認する方法を見てみましょう。
SSLがデフォルトでMySQLサーバーにインストールされて有効になっている場合、通常は次のように表示されます。
- MySQLデータディレクトリに*.pemファイルが存在します。これらは、ここで説明するSSLに使用されているさまざまなクライアントおよびサーバーの証明書とキーです。
- サーバーの起動中にmysqldエラーログファイルに次のようなメモがあります:
- [注]データディレクトリでca.pem、server-cert.pem、server-key.pemが見つかりました。それらを使用してSSLサポートを有効にしようとしています。
- 「have_ssl」変数の値はYESになります:
mysql>は「have_ssl」のような変数を表示します;
+ ————— + ——- +
| Variable_name |価値|
+ ————— + ——- +
| have_ssl |はい|
+ ————— + ——- +
MySQLクライアントに関しては、デフォルトでは、常にサーバーとの暗号化されたネットワーク接続を試み、それが失敗した場合は、暗号化されていないモードにフォールバックします。
>つまり、次のコマンドを使用してMySQLサーバーに接続します:
mysql -h
ステータスコマンドを使用して、現在のクライアント接続が暗号化されているかどうかを確認できます:
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
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を完全にオフにする必要がある場合は、次の操作を実行できます。
- MySQLデータディレクトリの*.pem証明書とキーファイルを削除します。
- SSLオプションをオフにしてMySQLを起動します。これは、行エントリを追加することで実行できます:
ssl =0 my.cnfファイル内。
次のことがわかります:
- :
- などのmysqldログにはメモがありません。
- [注]データディレクトリでca.pem、server-cert.pem、server-key.pemが見つかりました。それらを使用してSSLサポートを有効にしようとしています。
- 「have_ssl」変数の値は無効になります:
mysql>は「have_ssl」のような変数を表示します;
+ ————— + ——- +
| Variable_name |価値|
+ ————— + ——- +
| have_ssl |無効|
+ ————— + ——- +
MySQLでSSLを適用する
MySQLサーバーではSSLがデフォルトで有効になっていますが、強制されておらず、SSLなしでも接続できることがわかりました。
これで、require_secure_transportシステム変数を設定することで、サーバーがSSL接続のみを受け入れるように強制できるようになります。これは、次のコマンドを使用してMySQLサーバーに接続しようとすることで確認できます。
mysql -h
そして、サーバーからの次のエラーメッセージで接続が拒否されることがわかります:
エラー3159(HY000):–require_secure_transport =ONの間、安全でないトランスポートを使用した接続は禁止されています。
レプリケーションチャネルに関するSSLの考慮事項
デフォルトでは、MySQLレプリケーション設定では、スレーブは暗号化せずにマスターに接続します。
したがって、レプリケーショントラフィックのために安全な方法でマスターに接続するには、スレーブは MASTER_SSL=1;を使用する必要があります。 「CHANGEMASTERTO」の一部として マスターに接続するためのパラメーターを指定するコマンド。マスターがrequire_secure_transportを使用してSSL接続を強制するように構成されている場合にも、このオプションは必須であることに注意してください。