3

MySQL公式サイトのMySQL .NETコネクタを使用しています。C# プログラムから Mysql データベースへの安全な SSL 接続を確立しようとしています。Mysql サーバーは SSL で接続できます。have_sslvariable が および に設定されyesca-certおよびserver-certserver-key指定されています。

ユーザーの権限は次のとおりです。

'GRANT USAGE ON *.* TO \'logowanie\'@\'%\' IDENTIFIED BY PASSWORD \'*...\' REQUIRE SSL'
'GRANT SELECT ON `db`.`table1` TO \'logowanie\'@\'%\''

それで、このユーザーはSSLなしではログインできないと思いますか?私は正しいですか?

C# プログラムの接続文字列は次のようになります。

"server=127.0.0.1;uid=logowanie;pwd=log1;database=ewidencja;SslMode=Required";

この接続文字列には、証明書ファイルへのパスがないことを確認してください。「SSLMode=Required」オプションしかありません。他の SSL オプションなしで SSL 暗号化接続を行うことは可能ですか?

また、ユーザーはログインして、でいくつかの選択コマンドを作成できますtable1。それで、この接続はSSL暗号化されていると思いますか? この接続が SSL 暗号化されているかどうかを 100% 確実に確認するにはどうすればよいですか?

4

3 に答える 3

8

https://stackoverflow.com/a/46609559/492336からの回答の投稿:

MySqlConnection: 内からこの SQL ステートメントを実行するSHOW SESSION STATUS LIKE 'Ssl_cipher'と、接続が暗号化されているかどうかが表示されます。

コード例:

var connection = new MySqlConnection(ConfigurationManager.AppSettings["Test"]);
connection.Open();
var command = new MySqlCommand("SHOW SESSION STATUS LIKE \'Ssl_cipher\'", connection);
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    Console.WriteLine($"{reader.GetString(0)}: {reader.GetString(1)}");
}
于 2017-10-06T22:00:57.103 に答える
3

この接続が SSL 暗号化されているかどうかを 100% 確実に確認するにはどうすればよいですか?

Wiresharkをインストールしてトラフィックをキャプチャすると、暗号化されているかどうかを 100% 確認できます。

于 2013-01-18T07:30:47.010 に答える
1

Openssl https://www.openssl.org/には、SSL サーバーのテストに使用できる「s_client」というツールが付属しています。これは、*nix、cygwin、および Win32 で使用できます。

サンプル使用法

$ openssl s_client -connect servername:port -CAfile /path/to/ca.pem -debug -showcerts

-pause、-state などの無数のオプションがあり、SSL のセットアップとティアダウンを追跡するのに役立ちます。

安全

Miljenが指摘したように、Wiresharkを使用してください。

Wireshark に関するいくつかのヒントを次に示します。

  1. Wireshark を使用してトラフィックを収集する
  2. パケットの内容がランダム ノイズ (ランダム バイト) のように見えることを確認します。
  3. この出力は、SSL がオンになっていることを確認するのに十分なはずです。

SSL コードが適切に機能するかどうかをテストする場合は、他の SSL 実装と相互運用できるかどうかを確認することもできます。

サーバーの公開鍵を適切にハードコーディングしましたか、またはサーバー証明書を適切にチェックして、偽者ではなくサーバーに対応していることを確認しましたか? クライアント認証を有効にしましたか? 適切な方法で受け入れ可能な暗号スイートのリストを設定しましたか? TLS 1.2 を使用しましたか? TLS は通信チャネルのみを保護しますが、エンドポイントがさまざまな悪意のある攻撃などから保護されていることを確認する必要があることを認識していますか?

それはあなたがテストを始めるかもしれない ここにいくつかのヒントがあります

テストについては、https://www.owasp.org/index.php/Testing_for_SSL-TLS_%28OWASP-CM-001%29を参照してください。

このリンクにはすばらしい内容が含まれていますが、すべてを網羅しているわけではありません。これらのテストは HTTPS を対象としていますが、アプリケーション レベルのプロトコルではなく SSL プロトコルを分析しているため、どの SSL 実装でも機能するはずです。

于 2015-11-30T13:27:36.967 に答える