3

我正在尝试使用 SSL 调用HTTPWebRequest,但它不断失败,说它无法建立信任。我添加了一个回调ServicePointManager.ServerCertificateValidationCallback并返回true总是有效的。但是,我希望事情比这更安全一些。查看SslPolicyErrors验证方法中的内容,我似乎遇到了RemoteCertificateNameMismatch错误。什么没有正确匹配导致这种错误?

(编辑:请参阅答案中的评论)我正在访问的站点使用基于 SSL 的 HTTPBasic 和类似 v1.api.serviceprovider.com 的 URL,并带有颁发给 *.serviceprovider.com 的证书。

4

1 回答 1

3

一般证书问题:

  • 不是由受信任的证书提供商颁发的证书(必须在您的信任链中)
  • 证书过期

此特定错误通常意味着未为您访问的站点颁发证书。例子:

  • “www.yoursite.com”和“yoursite.com”之间的区别(它们是不同的;一些大牌弄错了,这真的让我很恼火......)
  • 作为 IP 地址而不是证书上的名称访问;或 v/v
  • 负载均衡器将您重定向到“server1,yoursite.com”,但为您提供“yoursite.com”的证书
  • 一个负载均衡器默默地将您传递给“server1”,它正在为“server1”而不是站点颁发证书
  • 编辑见评论)为多个级别颁发的通配符证书 - 即当您点击 foo.bar.somesite.org 时颁发给 *.somesite.org

通过导航到该站点并阅读浏览器向您发出的警告并检查已颁发的证书,其中大部分都可以轻松识别。

于 2009-01-19T15:02:23.387 回答