Я установил клиентский сертификат на свой клиентский сервер. При отправке HTTPS-запроса от клиента на целевой сервер с сертификатом клиента журналы IIS сообщают о 500.0.64 произошла ошибка (это журнал IIS целевого сервера). Клиентское приложение, которое выполняет вызов с клиентского сервера, представляет собой веб-сайт .Net, размещенный в IIS.
На целевом сервере IIS настроен на «Требовать SSL», а клиентские сертификаты - на «Требовать». Если я не включу сертификат в запрос, я получу ошибку 403 Forbidden, что правильно. Если я изменю настройку сертификата клиента на «Принять», я все равно получу 500.0.64 ошибка, если сертификат передан, но в противном случае приложение, размещенное на целевом сервере, доступно.
В качестве теста я создал простое консольное приложение, которое разместил на клиентском сервере. Это использует сертификат клиента и работает отлично, с успешной проверкой сертификата на целевой машине. Он использует идентичный код для генерации HTTP-запроса, как и веб-сайт, размещенный в IIS. Поэтому я пришел к выводу, что проблема не может быть связана с клиентским приложением и не может лежать на целевой машине - правильно или ошибочно.
Итак, почему включение клиентского сертификата в запрос от приложения, размещенного на IIS, вызывает эту ошибку, тогда как это нормально для консольного приложения? Может ли кто-нибудь посоветовать, как дальше диагностировать проблему.
Я последовал совету из этого ответа так как сценарий практически идентичен. Однако соответствующий раздел реестра не существует ни на клиентском, ни на целевом компьютере, поэтому я не считаю, что это причина.
После пары дней сканирования всевозможных форумов я создал это решение, которое работало как шарм.
НЕОБХОДИМО преобразовать SCCM MP в https
Проблемы mpcontrol: не удалось вызвать HttpSendRequestSync для порта 443; ошибка расширения SAN2; Журнал IIS: 500 64 0
Решение для ошибки SAN2: Расширения: добавьте аутентификацию клиента в сертификат; Название темы - сборка из AD (опция);
При ошибке IIS на сервере ISS используйте эту команду для привязки сертификата: http add sslcert ipport = 0.0.0.0: 443 certhash = "your certhash" appid = "your appid" certstorename = My verifyclientcertrevocation = отключить VerifyRevocationWithCachedClientCertOnly = Отключить UsageCheck = Включить clientcertnegotiation = Включить
Оказывается, у пользователя aspnet на клиенте не было доступа к сертификату. Как только я дал ему доступ для чтения, все заработало.
Вы можете сделать это, перейдя к сертификату в консоли MMC.exe, щелкнув сертификат правой кнопкой мыши и управляя закрытым ключом.
Я обнаружил это решение, прочитав этот ответ: https://stackoverflow.com/a/2859843/976866