2017-07-14 5 views
0

Je suis en train de porter une application cliente HTTPS vb.net sur WinCE60 CF35: elle doit envoyer des requêtes REST HTTPS à un serveur.Problèmes avec la requête REST HTTPS sous WinCE

J'ai commencé le développement sur un bureau Win10 et là je n'ai aucun problème (VS2015 - NET35). Quand je cours sur WinCE, je reçois une exception quand j'envoie le message: le système dit qu'il n'a pas le message d'erreur, mais je vois l'état = 10 = SecureChannelFailure.

Le code est le suivant:

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() 
     ... 

Du côté du serveur, je ne reçois rien. Alors, je tryed à renifler en utilisant Wireshark et je vois ce qui suit:

Sniff Dans ma compréhension du client (0,113) envoie un RESET, mais je ne sais pas pourquoi ..

PS: si je construire une requête HTTP je reçois une réponse.

+0

J'ai substitué les appels standard avec ceux de Rebex . Cette bibliothèque peut générer un journal où j'ai trouvé: 2017-07-14 16:27:44 INFO HttpRequest (1) [89589158] TLS: Statut de vérification de certificat: RootNotTrusted, CnNotMatch (32) – SteMMo

+0

Pour le moment j'ai résolu avec la lib Rebex ajouter à mon code source la ligne: client.Settings.SslAcceptAllCertificates = True Maintenant, je voudrais comprendre si le problème sur CF35 était sur la version TLS, la version SHA ou autre. – SteMMo

Répondre

1

multiples problèmes potentiels ici:

  • Basé sur le message d'erreur, le problème le plus probable: le périphérique peut être manquant un certificat racine ou le certificat racine peut être expiré ou révoqué, et donc Windows CE est incapable de vérifier le certificat du serveur. Si votre périphérique CE possède une interface utilisateur, ouvrez l'applet Certificats dans le Panneau de configuration pour vérifier que le certificat racine requis est installé et valide.
  • .NET CF ne prend pas en charge les certificats SHA-2 (voir les réponses here). Mentionnez ceci parce que c'est le prochain problème que vous risquez de rencontrer, une fois le certificat racine en place
  • Windows CE envoie souvent RST pour fermer les connexions TCP. Pas joli, mais sans doute sans rapport avec le problème HTTPS que vous voyez (pour autant que je comprends la raison est que c'est plus rapide que les deux côtés envoyer FIN/ACK)