web-dev-qa-db-ja.com

global.asax.csにないweb.configを介して「SecurityProtocolType.Ssl、Ssl1、Ssl2、Ssl3;」を実装する方法

私の質問は簡単です、私はこれらの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"は識別されていません

4
Maryadi Poipo

通常、列挙型は、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にアップグレードすると、名前付きの文字列が利用できるようになるので、よりクリーンな場合があります。

4
jimbobmcgee

sslProtocols="Ssl3|Tls|Tls11|Tls12"はVisualStudio 2012(.Net Framework 4.5)では無効です(web.config内)

ただし、Visual Studio 2015(.Net Framework 4.5.2)で使用できます。

0
Palash

私も同じことを経験し、SSL/TLSプロトコルを1つだけ使用して機能させました。

たとえば、最強のセキュリティプロトコルが必要な場合は、sslProtocols = "Tls12"です。

それ以外の場合、SSLプロトコルを指定する必要がない場合、デフォルトは.Net4.5のTLS1になります。

0
Joe Park