説明: リクエストが中止されました: SSL/TLS セキュア チャネルの作成に失敗しました。 SSL/TLS セキュア チャネルを作成できませんでした。 ビルド プラットフォーム: Windows Server 2012、Windows 7 Service Pack 1 (SP1)、および Windows Server 2008 R2 SP1
[エピソード] ウェブサイトのダウンロード サイト全体のダウンロード ツールで、URL を入力してワンクリックでダウンロードできます。シンプルで使いやすく、マルチスレッドのタスクを備えています。
HttpWebRequest の前にコードを設定します
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
上記の方法が機能しない場合は、システム レベルの問題です。現在使用しているシステムに応じてシステム パッチを更新してください。
Windows の WinHTTP の既定のセキュリティ プロトコルとして TLS 1.1 および TLS 1.2 を有効にする更新プログラム。この更新プログラムは、Windows Server 2012、Windows 7 Service Pack 1 (SP1)、および Windows Server 2008 R2 SP1 1.1 でのトランスポート層セキュリティ (TLS) のサポートを提供します。 TLS 1.2 のサポートについては、公式ドキュメントを参照してください。 https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
次のレジストリ コードをコピーし、レジストリにインポートします。新しいテキストを作成し、サフィックス txt を reg (レジストリ キー) に変更してインポートします (インポートする前にバックアップを作成します)。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000800 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000800 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001
PowerShell が開きます。
[Net.ServicePointManager]::SecurityProtocol [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
コードの最初の行は、サポートされている TLS バージョンをチェックします。コードの 2 行目は、TLS サポートを変更します。
前の 2 つの方法はどちらも機能しないため、究極の方法のみを使用できます。
注: 各 Windows バージョンでサポートされる特定の TSL バージョンについては、この記事の補足情報を参照してください。
解決策は存在しますが、フレームワークのバージョンに依存します。
.NET 4.6以降。 TLS 1.2 をサポートするために追加の作業を行う必要はありません。デフォルトでサポートされています。
.NET 4.5。 TLS 1.2 はサポートされていますが、デフォルトのプロトコルではありません。それを使用するかどうかを選択する必要があります。次のコードは TLS 1.2 をデフォルトとして設定します。安全なリソースに接続する前に必ず実行してください。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.NET 4.0。 TLS 1.2 はサポートされていませんが、システムに .NET 4.5 (以降) がインストールされている場合は、アプリケーション フレームワークが TLS 1.2 をサポートしていない場合でも、TLS 1.2 を使用するオプションがあります。唯一の問題は、.NET 4.0 の SecurityProtocolType に TLS1.2 のエントリがないため、この列挙値の数値表現を使用する必要があることです。
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;
.NET 3.5 以下。 TLS 1.2(*) はサポートされていないため、回避策はありません。アプリケーションを最新バージョンのフレームワークにアップグレードします。
PS シナリオ 3 の場合、プログラムで強制することなく、デフォルトで 4.5 に TLS 1.2 の使用を強制するレジストリ ハックもあります。 PPS Microsoft の Christian Pop が以下で言及しているように、TLS1.2 サポートを有効にする .NET 3.5 用の最新パッチが利用可能です。
見る:
おそらく、Web サイトによって提供される証明書キーの長さは 512 ビットで、現在の業界標準によれば、2048 ビット以上の公開キーが含まれている必要があります。 Microsoft の 2016 年 9 月のセキュリティ更新プログラムは、公開キーの長さが 2048 バイト未満 (RSA 512 など) の場合、次のようにこの問題に対応しました。Windows は HTTPS 接続をキャンセルできます
2012 R2 and Windows 8
2008 R2 and Windows 7
SecurityProtocolType.Tls1.0=0xC0; SecurityProtocolType.Tls1.1=0x300; SecurityProtocolType.Tls1.2=0xC00;
.net 4.0/4.5 のデフォルト値: SecurityProtocolType.Tls | SecurityProtocolType.Ssl3 .net 4.6/4.7 のデフォルト値: SecurityProtocolType.Tls12 |
SCH_USE_STRONG_CRYPTO このフラグは .NET Framework 4.6 で自動的に使用されます。 https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-net-framework Win7Sp1 および .Net 3.5.1 では、TLS1.2 がサポートされています
ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3; // ssl3 ServicePointManager.SecurityProtocol |= (SecurityProtocolType)0x300 | // 1.1 および 1.2 のサポートを追加します。
TLS1.2 の結論は次のとおりです。
.net4 でのレジストリの変更
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001
この記事を書いているのは、ウェブサイトのダウンロード内容はインターネット上から収集・整理したものです。転載の際は出典を明記してください。