2016-07-11 7 views
0

all - Windows上で完全に機能するdotnetコアAPIセットを作成しました。 Ubuntu 14.04では、認証にクライアント証明書を使用するベンダーに対する1つのSOAPリクエストを除いてすべてが動作します。UbuntuのDotnet Coreのクライアント証明書

要求は常にタイムアウトします。 Netstatトレースは、443でリモートサービスに1バイトのデータしか送信されなかったことを示しています。100秒間通信が行われていないと、アプリケーションはタイムアウト例外をスローします。

私はopensslを使ってPEMとCRTファイルをエクスポートしようとしましたが、コードの設定方法(pfx w/password)に加えてそれらを参照しました。また、PFXの証明書部分をca-certsにロードしました。

 var binding = new BasicHttpBinding(); 
     binding.Security.Mode = BasicHttpSecurityMode.Transport; 
     binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; 

     var baseAddress = new Uri(mySettings.ClientUrl); 
     factory = new ChannelFactory<SingleSignOnSoap>(binding, new EndpointAddress(baseAddress)); 
     if (RuntimeEnvironment.OperatingSystemPlatform == Platform.Windows) 
     { 
      //windows file location 
      factory.Credentials.ClientCertificate.Certificate = new X509Certificate2(mySettings.PrivateKeyWindowsPath, mySettings.PfxPass); 
     } 
     else 
     { 
      //linux file location 
      factory.Credentials.ClientCertificate.Certificate = new X509Certificate2(mySettings.ClientPrivateKeyUnixPath, mySettings.PfxPass); 

     } 

     serviceProxy = factory.CreateChannel(); 
     RequestTicketRequest request = new RequestTicketRequest(); 
     RequestTicketRequestBody requestBody = new RequestTicketRequestBody(xmlRequest); 
     request.Body = requestBody; 

     RequestTicketResponse response = serviceProxy.RequestTicket(request); 

     return response.Body.RequestTicketResult; 
+0

私はコードにそれを含めませんでしたが、URLはhttps:// – mwdavisii

+0

を使用しています。また、BasicHttpsBindingを使用して無駄にしてみました – mwdavisii

答えて

0

Wiresharkのとtsharkの認証が実際にOKを作動していることが示され:ここでは

コードです。 ServiceFactoryが応答を受信するのを待っているが、ネットワークが接続リセットフラグ([RST、ACK])をリモートサーバーに送信したため、タイムアウトが発生しています。私は複数のLinuxディストリビューションで再現できたので、gnetのdotnet core WCFチームのキューに問題を追加しています。

関連する問題