[解決済み】.NET 4.5でのデフォルトのSecurityProtocolについて
質問
をサポートするサーバーと通信するためのデフォルトのセキュリティプロトコルは何ですか?
TLS 1.2
? ウィル
.NET
は、デフォルトでサーバー側でサポートされている最も高いセキュリティプロトコルを選択するのか、それともこのコード行を明示的に追加しなければならないのか。
System.Net.ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
このデフォルトを変更する方法は、コード変更以外にあるのでしょうか?
最後に
.NET 4.0
までしかサポートしていません。
TLS 1.0
をサポートするために、クライアントのプロジェクトを4.5にアップグレードしなければならないのです。
TLS 1.2
.
私の動機は
SSLv3
がサポートする場合でも、クライアント側でこれを無効にし(私はすでにマシンのレジストリでこれを無効にするパワーシェルスクリプトを持っています)、サーバーがサポートする最高のTLSプロトコルをサポートするようにします。
更新しました。
を見てみると
ServicePointManager
のクラスは
.NET 4.0
には列挙された値はないようですね。
TLS 1.0
と
1.1
. 両者とも
.NET 4.0/4.5
で、デフォルトは
SecurityProtocolType.Tls|SecurityProtocolType.Ssl3
. を無効にしても、このデフォルトが壊れないことを祈ります。
SSLv3
をレジストリに登録します。
しかし、私はすべてのアプリをアップグレードして
.NET 4.5
を明示的に追加し
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
を、すべてのアプリケーションのブートストラップコードに追加してください。
これは、様々なAPIやサービスに対して、ダウングレードしないようにアウトバウンドリクエストを行うものです。
SSLv3
を選択し、最高レベルの
TLS
.
この方法は合理的だと思いますか、それともやりすぎでしょうか?私は多くのアプリケーションをアップデートする必要があります。
TLS 1.0
は近い将来、一部のプロバイダーで非推奨となる可能性があります。
APIへのアウトバウンドリクエストを行うクライアントとして、レジストリでSSL3を無効にすることは、.NETフレームワークでも効果があるのでしょうか?デフォルトでは、TLS 1.1と1.2は有効になっていないようですが、レジストリで有効にする必要があるのでしょうか?RE http://support.microsoft.com/kb/245030 .
少し調べたところ、レジストリの設定はIIS(サーバーのサブキー)とブラウザ(クライアントのサブキー)に適用されるため、影響はないと思われます。
この投稿は、複数の質問と、それに続く "多分" の答えになってしまい、申し訳ありません。
解決方法は?
他の回答でコメントを残している方の中には、「設定」を
System.Net.ServicePointManager.SecurityProtocol
を特定の値に設定すると、将来の.NETのアップデートでデフォルト値となる可能性のあるTLSのバージョンをアプリで利用できなくなります。 プロトコルの固定リストを指定する代わりに、次のようにしてください。
.NET 4.7以降の場合
を設定しないでください。
System.Net.ServicePointManager.SecurityProtocol
. デフォルト値 (
SecurityProtocolType.SystemDefault
) は、アプリが作成された時点では存在しないかもしれない新しいバージョンも含め、オペレーティングシステムが知っていて設定されているすべてのバージョンを使用できるようにします。
.NET Frameworkの以前のバージョンの場合。 を使用すると、他のプロトコルをそのままにして、自分が知っている重要なプロトコルをオンまたはオフにすることができます。
他のプロトコルに影響を与えずに TLS 1.1 と 1.2 をオンにする。
System.Net.ServicePointManager.SecurityProtocol |=
SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
を使用していることに注意してください。
|=
を使えば、他のフラグをオフにすることなく、これらのフラグをオンにすることができます。
他のプロトコルに影響を与えずにSSL3をオフにすること。
System.Net.ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3;
関連
-
[解決済み] [Solved] ファイル *.mdf をデータベースとしてアタッチできない
-
[解決済み] Microsoft.Practices.ServiceLocationはどこから来たのですか?
-
[解決済み] app.configのマッピングがないアセンブリのapp.configの再マッピングを考慮する。
-
[解決済み] AssemblyInfo.csは何に使うのですか?
-
[解決済み] WCFのデバッグ時にサーバーに自動的に踏み込むことができない
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] .Any() vs .Count() > 0のどちらのメソッドがより良いパフォーマンスを発揮しますか?
-
[解決済み] LINQクエリでToList()とToArray()のどちらを呼び出すのが良いですか?
-
[解決済み] .NETで文字列から発音区分符号(アクセント)を削除するにはどうすればよいですか?
-
[解決済み] WCF - メッセージサイズのクォータを増加させる方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】この動詞型ではcontent-bodyを送信できない
-
[解決済み】警告。同じ依存アセンブリの異なるバージョン間で競合が見つかりました。
-
[解決済み] ファイルまたはアセンブリ 'System.Data.SQLite' をロードできませんでした。
-
[解決済み] NetFx45WebLinkとNetFx45RedistLinkの違いは何ですか?
-
[解決済み] データテーブルがすでに別のデータセットに属している
-
[解決済み] ASP.NET control to render a <div>
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] DelphiとDelphi.NETの違いについて
-
[解決済み] System.Timers.Timer vs System.Threading.Timer
-
[解決済み】Powershell Invoke-WebRequestがSSL/TLSセキュアチャンネルで失敗する。