HTTPWebRequest Удаленное несоответствие имени сертификата - PullRequest
2 голосов
/ 19 января 2009

Я пытаюсь сделать SSL-вызов, используя HTTPWebRequest, и он постоянно отказывает, говоря, что не может установить доверие. Я добавил обратный вызов к ServicePointManager.ServerCertificateValidationCallback и возвращение true всегда работает. Тем не менее, я хотел бы, чтобы вещи были немного более безопасными, чем это. Глядя на SslPolicyErrors в методе проверки, кажется, что я получаю ошибку RemoteCertificateNameMismatch. Что не соответствует правильно, чтобы вызвать такую ​​ошибку?

(редактировать: см. Комментарии в ответе) Сайт, на который я захожу, использует HTTPBasic по SSL и URL-адрес, например v1.api.serviceprovider.com, с сертификатом, выданным * .serviceprovider.com.

1 Ответ

3 голосов
/ 19 января 2009

Общие проблемы с сертификатом:

  • сертификат не выдан доверенным поставщиком сертификатов (должен быть в вашей цепочке доверия)
  • сертификат истек

Эта конкретная ошибка обычно означает, что сертификат не выдан для сайта, на который вы заходите. Примеры:

  • разница между "www.yoursite.com" и "yoursite.com" (они разные; некоторые громкие имена ошибаются, что меня действительно раздражает ...)
  • доступ в виде IP-адреса вместо имени в сертификате; или v / v
  • балансировщик нагрузки, перенаправляющий вас на «server1, yoursite.com», но предоставляющий вам сертификат от «yoursite.com»
  • балансировщик нагрузки молча передает вам «server1», который выдает сертификаты для «server1», а не для сайта
  • ( edit см. Комментарии ) подстановочный сертификат, выданный для нескольких уровней - то есть выданный * .somesite.org, когда вы нажимаете foo.bar.somesite.org

Большинство из них легко узнать, перейдя на сайт и прочитав предупреждения, которые выдает ваш браузер, и проверив полученный сертификат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...