Мы разрабатываем ASP.NET WebAPI, который размещается в IIS и выполняет аутентификацию с использованием клиентских сертификатов с помощью iisClientCertificateMappingAuthentication. В нашей локальной среде разработки мы протестировали IIS 7-8 и Windows 7-8/Server 2012, и все они работают нормально.
Мы настроили демонстрационную среду в Azure с виртуальной машиной под управлением Windows Server 2012 R2 и IIS 8. Используя эту конфигурацию, нам еще предстоит успешно пройти проверку сертификата клиента IIS, где мы постоянно получаем ошибку HTTP 403.16.
Служба используется пользовательским приложением iOS, которое, как мы проверили, отправляет сертификат клиента, что и ожидалось, поскольку мое понимание ошибки подразумевает, что IIS не может проверить полученный сертификат.
Центр сертификации клиентов устанавливается в хранилищах доверенных корневых центров сертификации и эмитентов проверки подлинности клиентов для локального компьютера.
Практически все ресурсы, которые мы можем найти по этой проблеме, предлагают решение здесь: http://social.technet.microsoft.com/Forums/en-US/fae724e8-628e-45a5-bf39-6e812d8a1a70/40316-problem-in-iss8-on-mp-in-dmz?forum=configmanagerdeployment, где предлагается добавить параметр реестра для ClientAuthTrustMode. Это не решило проблему для нас; нам также не нужно было делать это ни для одного из наших локальных тестов, в которых участвовали точно такие же версии ОС и IIS.
Мы потратили на это несколько дней, но безрезультатно, и надеялись, что кто-то сможет разобраться в этом вопросе. Есть ли какая-либо конфигурация по умолчанию, с которой нам еще предстоит столкнуться, чтобы включить эту форму проверки подлинности для виртуальных машин в Azure? Похоже, что IIS на виртуальной машине в Azure не может фактически проверить ЦС в доверенном корне. Одна из моих идей заключалась в том, что, возможно, сертификат удаляется из запроса до того, как он будет направлен в IIS, но опять же, это кажется маловероятным, учитывая мое понимание кода ошибки.
У кого-нибудь заработала такая установка?