Question

J'essaie de passer un appel SSL à l'aide de HTTPWebRequest , qui échoue continuellement en disant qu'il ne peut pas établir une relation de confiance. J'ai ajouté un rappel à ServicePointManager.ServerCertificateValidationCallback et renvoyer true fonctionne toujours. Cependant, j'aimerais que les choses soient un peu plus sûres que cela. En regardant SslPolicyErrors dans la méthode de validation, il semble que je reçois une erreur RemoteCertificateNameMismatch . Qu'est-ce qui ne correspond pas correctement pour causer ce genre d'erreur?

(éditer: voir les commentaires dans la réponse) Le site auquel j'accède utilise HTTPBasic sur SSL et une URL du type v1.api.serviceprovider.com, avec un certificat délivré à * .serviceprovider.com.

Était-ce utile?

La solution

Problèmes généraux liés aux certificats:

  • certificat non émis par un fournisseur de certificats de confiance (doit figurer dans votre chaîne de confiance)
  • certificat expiré

Cette erreur spécifique signifie généralement que le certificat n'est pas émis pour le site que vous visitez. Exemples:

  • différence entre " www.votresite.com " et " yoursite.com " (Ils sont différents; certains grands noms se trompent, ce qui me gêne vraiment ...)
  • accédant en tant qu’adresse IP au lieu du nom figurant sur le certificat; ou v / v
  • un équilibreur de charge vous redirigeant vers & server; server1, yoursite.com " mais en vous donnant le certificat de "yoursite.com"
  • un équilibreur de charge vous transmettant silencieusement à "serveur1", qui émet des certificats pour "serveur1", et non au site
  • ( modifier voir les commentaires ): un certificat générique émis pour plusieurs niveaux, c'est-à-dire délivré à * .somesite.org, lorsque vous cliquez sur foo.bar.somesite.org

La plupart d'entre eux sont facilement identifiables en naviguant sur le site, en lisant les avertissements que vous donne votre navigateur et en inspectant le certificat délivré.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top