2017-07-14 56 views
0

我正在WinCE60 CF35上移植一個vb.net HTTPS客戶端應用程序:bsically它需要向服務器發送HTTPS REST請求。WinCE上的REST HTTPS請求問題

我開始在Win10桌面上開發,在那裏我沒有問題(VS2015 - NET35)。

當我在WinCE上運行時,我發送webrequest時收到一個異常:系統表示它沒有錯誤消息,但是我看到status = 10 = SecureChannelFailure。

的代碼如下:

Private Function SendGetRequest(cmd As String) As Boolean 

    Dim request As WebRequest = WebRequest.Create(m_baseUrl + cmd) 

    request.Method = "GET" 
    request.Timeout = m_timeout 
    request.Headers.Add("Authorization", "Basic " + m_authInfo) 
    ' 
    Dim dataStream As Stream 
    ' 
    Try 
     Dim response As WebResponse = request.GetResponse() 
     m_statusCode = CType(response, HttpWebResponse).StatusCode 

     dataStream = response.GetResponseStream() 
     ... 

在服務器端,我沒有收到任何東西。所以,我tryed使用Wireshark的嗅探,我看到以下內容:

Sniff 在我的理解,客戶端(.113)發送一個復位,但我不知道爲什麼..

PS:如果我建立一個HTTP請求我收到迴應。

+0

我用Rebex替換了標準調用。這個庫可以生成一個日誌,我發現:2017-07-14 16:27:44 INFO HttpRequest(1)[89589158] TLS:證書驗證狀態:RootNotTrusted,CnNotMatch(32) – SteMMo

+0

目前我用Rebex lib添加到我的源代碼行︰client.Settings.SslAcceptAllCertificates = True現在我想了解如果CF35上的問題是在TLS版本,SHA版本或任何.. – SteMMo

回答

1

多個潛在這裏的問題:

  • 基於該錯誤消息,最有可能的問題:CE設備可能缺少根證書或根證書可能已過期或撤銷,因此Windows CE的無法驗證服務器證書。如果您的CE設備具有UI,請打開控制面板中的證書小程序以驗證所需的根證書已安裝且有效。
  • .NET CF不支持基於SHA-2的證書(請參閱答案here)。提到這一點,因爲它是下一個可能遇到的問題,一旦根證書已經存在
  • Windows CE經常發送RST關閉TCP連接。不漂亮,但可能與您看到的HTTPS問題無關(據我所知理由是這比雙方發送FIN/ACK要快)