2016-10-29 14 views
0

I ve faced with very strange issue that i m 2日間それと苦労しています。いくつかのdevマシンで以下のコードを実行しようとしましたが、うまく動作しています。私は、Windows Server 2008 R2での運用サーバー上でそれを実行しようとする。しかし - それはメッセージで失敗しました:Windowsサーバー2008 R2のSSL/TLSセキュアチャネルを作成できませんでした

はここ

SSL/TLSのセキュリティで保護されたチャネルを作成できませんでしたコードの例です:

try 
     { 
      Console.WriteLine(ServicePointManager.SecurityProtocol); 
      ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls | 
                SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3; 
      ServicePointManager.Expect100Continue = true; 
      ServicePointManager.ServerCertificateValidationCallback += 
       (sender, certificate, chain, sslPolicyErrors) => true; // ignoring certificate errors 
      Console.WriteLine(ServicePointManager.SecurityProtocol); 
      using (var client = new WebClient()) 
      { 
       client.DownloadString("https://smlegacygateway-integration.mysmartmove.com/LandlordApi/v1/ServerTime"); 
      } 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Something goes wrong"); 
      Console.Write(ex); 
     } 

     Console.WriteLine("Everything is fine."); 
     Console.ReadLine(); 

Windows Server 2008 R2のみで失敗した理由を教えてください。私はWindows Server 2012上で実行しようとしました - すべてうまくいきます。

P.S.このコンソールアプリケーションを管理者権限で実行するので、権利の隙間には関係しないはずです。 ありがとうございます。

答えて

0

正直なところ私はなぜわからないのですか?私は、Windows 2012がWindows 2008にはない新しい暗号アルゴリズムをサポートしているからだと考えています。

this ssl testによると、サーバーはTSL 1.2とTSL 1.1のみをサポートし、選択された暗号スイートはわずかです。合格したすべてのハンドシェイクテストはTSL 1.2を使用して行ったので、このプロトコルをServicePointManager.SecurityProtocolにします。

Windows 2008で接続が失敗した理由は、CAPI2イベントログにあります。最初に有効にしてから、サーバー(smlegacygateway-integration.mysmartmove.com)に再度接続する必要があります。 CAPI2 event log

ああ、最終的なアドバイス。これをしないでください:

ServicePointManager.ServerCertificateValidationCallback += 
       (sender, certificate, chain, sslPolicyErrors) => true; // ignoring certificate errors 

証明書検証を実装する必要がある場合は、実装してください。常に真実を返すことは良い選択ではありません。オーバーライドする必要がない場合は、手を触れないようにしてください:)

関連する問題