私の質問は簡単です、私はこれらの2つのメインページを読みました:
しかし、最初のリンクから、解決するためにglobal.asax.csに設定されたSecurityProtocolの構成が表示されています
System.Net.WebException:要求が中止されました:SSL/TLSのセキュリティで保護されたチャネルを作成できませんでした。」
ここでは、この構成をweb.config/app.configに設定して、すべてのaspではなく独自のプロジェクトに少し固有にする必要があります。ネットプロジェクト... 2番目のリンク{msdn.Microsoft.com .....}が道だと思いますが、SSL/TLSエラーはまだあります...だから私の質問web.configを介してフォローを実装する方法は?
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls12
| SecurityProtocolType.Ssl3;
私もこのページを読みました wcfクライアントc#でtls 1.0を使用するようにconfigで強制します 、しかし答えはありません。
そして...私はちょうどこれらのページを見つけました:
次に、次のようにカスタムバインディングを実装します。
<customBinding >
<binding name="SureTaxSoap">
<sslStreamSecurity requireClientCertificate="true" sslProtocols="Ssl3|Tls|Tls11|Tls12" >
</sslStreamSecurity>
</binding>
</customBinding>
しかし、sslProtocols = "Ssl3 | Tls | Tls11 | Tls12"は識別されていません
通常、列挙型は、Enum.Parse
またはEnum.TryParse
を使用して、web.config内の文字列から変換されます。 WCF設定についても同じことが言えると思います(ただし、参照ソースをチェックして確認していません)。
Enum.Parse
は、フラグベースの列挙値を区切るためにコンマを使用しますが、必要に応じて、同等の整数値を文字列として解析することもできます。
したがって、問題がweb.config設定のフラグベースの列挙値の連結である場合は、カンマを使用して連結できる場合があります。例:
sslProtocols="SSl3, Tls"
sslProtocols="SSl3, Tls, Tls11, Tls12"
または、Tls12
が認識された値ではないことが問題である場合、これは.NET4.5でのみ追加されました。 .NET 4.0用にコンパイルしている場合、名前付き列挙型として解析されません。ただし、.NET 4.5は4.0へのインプレース更新であるため、4.5 インストール済みがある場合は、数値を解析できる可能性があります。
sslProtocols="4080"
これは、System.Net.SecurityProtocolType
列挙型のすべての数値の合計から取得されます。これらの数値もSystem.Security.Authentication.SslProtocols
およびSystem.IdentityModel.SchProtocols
の値と同じであるため、あなたの場合は同じであると推測します。
Ssl3 = 48,
Tls = 192,
Tls11 = 768,
Tls12 = 3072
もちろん、利用できる場合は、少なくともVisual Studio 2012/.NET 4.5にアップグレードすると、名前付きの文字列が利用できるようになるので、よりクリーンな場合があります。
sslProtocols="Ssl3|Tls|Tls11|Tls12"
はVisualStudio 2012(.Net Framework 4.5)では無効です(web.config内)
ただし、Visual Studio 2015(.Net Framework 4.5.2)で使用できます。
私も同じことを経験し、SSL/TLSプロトコルを1つだけ使用して機能させました。
たとえば、最強のセキュリティプロトコルが必要な場合は、sslProtocols = "Tls12"です。
それ以外の場合、SSLプロトコルを指定する必要がない場合、デフォルトは.Net4.5のTLS1になります。