2017-07-14 58 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要快)