locked
Comment utiliser WebRequest sur une adresse SSL ( https) RRS feed

  • Question

  • Bonjour,

    Je recherche depuis un petit moment d'envoyer des informations en POST avec l'objet WebRequest malheuresement avec le compact framework, j'ai tout le temps une exception qu'il n'arrive pas a établir la connexion https.
    J'utilise le SDK de windows mobile 6.

    Merci d'avance !
    vendredi 13 novembre 2009 20:37

Toutes les réponses

  • Je crois qu'en fait c'est totalement tranparent.

    Dans quel environnement fais-tu tes tests de connexion (3G, Réseau Wifi, Active Sync, etc) ?
    mardi 17 novembre 2009 12:14
  • J'ai testé sous différents environnement, tel que l'emulateur ou mon propre téléphone en 3G ou Active Sync mais j'ai toujours l'exeption
    mardi 17 novembre 2009 19:29
  • Est-ce que le certificat du site HTTPS est auto-signé ?

    En gros, si tu vas sur le site avec un browser et que tu as une erreur ou un avertissement concernant la sécurité, alors tes appels .NET échoueront.

    Si c'est le cas, .NET refuse la connexion par défaut et tu devras implémenter une politique de sécurité "maison".


    lundi 23 novembre 2009 13:41
  • je crois qu'il y a un bug dans le compact framework 3.5 justement à ce sujet: http://support.microsoft.com/Default.aspx?scid=kb%3ben-us%3b970549&x=12&y=12
    il faut demander le hotfix au support
    pour info il est déployé automatiquement dans marketplace donc pas besoin de s'en soucier pour une appli qui serait postée par ce biais.
    mardi 24 novembre 2009 14:54
  • Merci pour vos réponses, Je vais tenter le hotfix mais je n'ai pas exactement cette exception !
    Sinon ce n'est pas un SSL autosigné. Comment puis je implémenter une  politique de sécu "maison" ?

    Je posterais d_s que je peux l'exeption Exact car malheureusement je ne l'ai pas sous la main !
    mardi 24 novembre 2009 20:12
  • Pour implémenter une politique de sécurité, il faut créer une classe qui implémente ICertificatePolicy

    Imports System.Net
    Imports System.Security.Cryptography.X509Certificates
    
    Public Class TrustAllCertificatePolicy
    
        Implements ICertificatePolicy
    
        ' Default policy for certificate validation.
        Public Shared DefaultValidate As Boolean = True
    
        Public Function CheckValidationResult(ByVal srvPoint As ServicePoint, _
           ByVal cert As X509Certificate, ByVal request As WebRequest, ByVal problem As Integer) _
           As Boolean Implements ICertificatePolicy.CheckValidationResult
    
            Return DefaultValidate
        End Function
    
    End Class
    Puis avant de faire le moindre échange HTTPS, il faut mettre en place cette politique :

    REM On met en place la politique de sécurité
    
    System.Net.ServicePointManager.CertificatePolicy = New TrustAllCertificatePolicy()
    
    vendredi 11 décembre 2009 07:57