ホームページ >データベース >mysql チュートリアル >MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?

James Robert Taylor
James Robert Taylorオリジナル
2025-03-18 12:01:35432ブラウズ

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?

MySQL接続用のSSL/TLS暗号化を構成するには、次の手順に従ってください。

  1. SSL/TLS証明書の準備:SSL/TLS証明書を準備する必要があります。これらには、サーバー証明書( server-cert.pem )、サーバーキー( server-key.pem )、クライアント証明書( client-cert.pem )、およびクライアントキー( client-key.pem )が含まれます。これらのファイルは、MySQLサーバーのセキュアディレクトリに配置する必要があります。
  2. MySQL Serverの構成:MySQL構成ファイル(オペレーティングシステムに応じてmy.cnfまたはmy.ini )を編集します。 [mysqld]セクションの下に次の行を追加または変更します。

     <code>[mysqld] ssl-ca=/path/to/ca-cert.pem ssl-cert=/path/to/server-cert.pem ssl-key=/path/to/server-key.pem</code>

    /path/to/証明書が保存されている実際のパスに置き換えます。

  3. MySQL Serverを再起動します:構成を更新した後、MySQLサーバーを再起動して変更を適用します。
  4. サーバーSSL構成を確認します:MySQLに接続し、次のコマンドを実行して、サーバーがSSLを使用していることを確認します。

     <code>SHOW VARIABLES LIKE 'have_ssl';</code>

    出力にはYESが表示されます。

  5. MySQLクライアントの構成:クライアントが接続にSSLも使用することを確認するには、クライアント構成ファイルまたは実行時にSSLオプションを指定できます。たとえば、MySQLクライアント構成ファイル( my.cnfまたはmy.ini )の[client]セクションに次の行を追加できます。

     <code>[client] ssl-ca=/path/to/ca-cert.pem ssl-cert=/path/to/client-cert.pem ssl-key=/path/to/client-key.pem</code>
  6. テストSSL接続:クライアントを使用してMySQLサーバーに接続し、クライアント構成ファイルでまだ構成されていない場合はSSLオプションを指定します。コマンドを使用してください:

     <code>mysql -h hostname -u username -p --ssl-ca=/path/to/ca-cert.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem</code>

    接続したら、実行してSSLステータスを確認できます。

     <code>STATUS;</code>

    出力には、 SSL: Cipher in useが表示されます。

MySQLのSSL証明書を生成およびインストールする手順は何ですか?

MySQLのSSL証明書を生成およびインストールするには、次の手順に従ってください。

  1. 証明書権限(CA)証明書を生成する証明書:OpenSSLを使用して、CA証明書とキーを作成します。次のコマンドを実行します。

     <code>openssl genrsa 2048 > ca-key.pem openssl req -new -x509 -nodes -days 3600 -key ca-key.pem -out ca-cert.pem</code>

    国名や組織名など、CAの詳細を入力するように求められます。

  2. サーバー証明書とキーの生成:サーバー証明書リクエストを作成し、CAで署名します。

     <code>openssl req -newkey rsa:2048 -days 3600 -nodes -keyout server-key.pem -out server-req.pem openssl rsa -in server-key.pem -out server-key.pem openssl x509 -req -in server-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem</code>

    サーバー要求を生成するときは、 Common Name MySQLサーバーのホスト名と一致するようにします。

  3. クライアント証明書とキーを生成します。同様に、クライアント証明書リクエストを作成し、CAで署名します。

     <code>openssl req -newkey rsa:2048 -days 3600 -nodes -keyout client-key.pem -out client-req.pem openssl rsa -in client-key.pem -out client-key.pem openssl x509 -req -in client-req.pem -days 3600 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 02 -out client-cert.pem</code>
  4. 証明書のインストール:生成された証明書とキーをMySQLサーバーのセキュアディレクトリに配置します。たとえば、 /etc/mysql/ssl/を使用する場合があります。
  5. 前のセクションで説明されているmy.iniに、証明書my.cnf使用するようにMySQLを構成します
  6. 証明書ファイルを保護する:ディレクトリとファイルにMySQLサーバープロセスによってのみアクセス可能であること、および許可されていないアクセスを防ぐために権限が正しく設定されていることを確認してください。

MySQL SSL/TLS暗号化に自己署名証明書を使用できますか?セキュリティへの影響は何ですか?

はい、MySQL SSL/TLS暗号化に自己署名証明書を使用できます。ただし、考慮すべきいくつかのセキュリティへの影響があります。

  • 信頼の問題:自己署名証明書は、信頼できる証明書当局(CA)によって発行されていないため、クライアントはそれらを明示的に信頼する必要があります。クライアントが接続を拒否する可能性があるため、クライアントが正しく構成されていない場合、これは重要な問題になる可能性があります。
  • 中間者(MITM)攻撃:信頼できるCAがなければ、攻撃者が接続を傍受して偽の証明書を提示し、潜在的なMITM攻撃につながることが簡単です。そのような場合、クライアントは本物のサーバーと攻撃者を区別できない場合があります。
  • 検証の複雑さ:自己署名証明書を使用するには、より手動の構成と検証が必要です。たとえば、クライアントの構成にCA証明書への正しいパスが含まれていることを確認する必要があります。
  • 限られた範囲:自己署名証明書は、一般に制御された環境内での内部使用に適しています。クライアントがあなたの管理下にない公開アプリケーションにはそれほど適していません。
  • セキュリティベストプラクティス:自己署名証明書は暗号化を提供できますが、信頼できるCAによって発行された証明書と同じレベルの認証を提供しません。セキュリティ要件が高い生産環境には、信頼できるCAからの証明書を使用することをお勧めします。

SSL/TLS暗号化がMySQL接続のために正しく機能していることを確認するにはどうすればよいですか?

SSL/TLS暗号化がMySQL接続のために正しく機能していることを確認するには、次の手順に従ってください。

  1. MySQLサーバーの構成を確認します。MySQLサーバーに接続して実行します。

     <code>SHOW VARIABLES LIKE 'have_ssl';</code>

    出力にはYESが表示され、SSLが有効になっていることを示します。

  2. SSL接続ステータスの確認:MySQLサーバーに接続したら、実行します。

     <code>STATUS;</code>

    出力には、使用中の暗号を示すSSLフィールドを含める必要があります。たとえば、 SSL: Cipher in use is TLS_AES_256_GCM_SHA384

  3. SHOW STATUSコマンドを使用します。次のコマンドを実行して、SSL接続に関する詳細情報を取得します。

     <code>SHOW STATUS LIKE 'Ssl_cipher';</code>

    これにより、現在の接続に使用されている暗号が表示されるはずです。

  4. SSLオプションを使用してクライアント接続を確認してください。指定されたSSLオプションを使用してクライアントを使用してMySQLサーバーに接続します。

     <code>mysql -h hostname -u username -p --ssl-ca=/path/to/ca-cert.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem</code>

    接続が成功するはずで、 STATUSコマンドを使用してSSLステータスを確認できます。

  5. SSL接続メトリックを監視:実行して、SSL接続メトリックを監視できます。

     <code>SHOW GLOBAL STATUS LIKE 'Ssl%';</code>

    このコマンドは、 Ssl_acceptsSsl_accept_renegotiatesSsl_client_connectsなどのさまざまなSSL関連のステータス変数を提供します。

これらの手順に従うことにより、SSL/TLS暗号化が適切に構成され、MySQL接続用に機能するようにします。

以上がMySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。