Несоответствие имени удаленного сертификата HttpWebRequest

StackOverflow https://stackoverflow.com/questions/457848

  •  19-08-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top