HTTPWebRequest远程证书名称不匹配

时间:2009-01-19 14:59:09

标签: .net ssl httpwebrequest

我正在尝试使用HTTPWebRequest进行SSL调用,而且它一直在失败,说它无法建立信任。我已经向ServicePointManager.ServerCertificateValidationCallback添加了回调,并且返回true始终有效。但是,我希望事情比那更加安全。查看验证方法中的SslPolicyErrors,似乎我收到RemoteCertificateNameMismatch错误。什么不能正确匹配导致这种错误?

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

1 个答案:

答案 0 :(得分:3)

一般证书问题:

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

此特定错误通常表示不会为您要访问的站点颁发证书。例子:

  • “www.yoursite.com”和“yoursite.com”之间的区别(它们不同;有些大牌出错了,这真让我烦恼......)
  • 作为IP地址而不是证书上的名称进行访问;或v / v
  • 负载均衡器将您重定向到“server1,yoursite.com”但从“yoursite.com”获取证书
  • 负载均衡器以静默方式将您传递给“server1”,该服务器为“server1”而不是站点颁发证书
  • 编辑查看评论)为多个级别颁发的通配符证书 - 即当您点击foo.bar.somesite.org时发布到* .somesite.org

通过导航到网站并阅读浏览器提供给您的警告并检查已颁发的证书,可以轻松识别大部分内容。