it-swarm.com.ru

Ошибка HTTP 403.16 - проблема доверия сертификата клиента

Я пытаюсь внедрить аутентификацию сертификата клиента на IIS 8. Я развернул свою конфигурацию на компьютере разработчика и проверил, что она работает так, как ожидалось. Однако после настройки на сервере каждый раз, когда я перехожу на сайт и запрашиваю сертификат клиента, я выбираю его и сразу же получаю ошибку 403.16. Журнал неудачных запросов выдает код ошибки 2148204809 и сообщение «Цепочка сертификатов обработана, но завершена корневым сертификатом, который не является доверенным поставщиком доверия».

У меня есть действующий сертификат клиента, а также действующий сертификат CA. Сертификат CA установлен в Trusted Root Authorities на учетной записи компьютера как на сервере, так и на клиентском компьютере, а сертификат клиента установлен в Личном кабинете учетной записи текущего пользователя на клиентском компьютере.

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

Конфигурация IIS имеет sslFlags = SslNegotiateCert и iisClientCertificateMappingAuthentication включена.

Сервер не настроен на отправку CTL, и у нас SendTrustedIssuerList = 0.

Я не понимаю, почему клиентскому сертификату нельзя доверять.

26
Eric

В Windows 2012 введены более строгие проверки хранилищ сертификатов. В соответствии с KB 2795828: внешняя служба Lync Server 2013 не может быть запущена в Windows Server 2012 , хранилище доверенных корневых центров сертификации (т. Е. Корневое) может иметь только сертификаты, которые являются самозаверяющими. Если это хранилище содержит неподписанные сертификаты, проверка подлинности клиентских сертификатов в IIS возвращает код ошибки 403.16.

Чтобы решить эту проблему, вы должны удалить все неподписанные сертификаты из корневого хранилища. Эта команда PowerShell идентифицирует неподписанные сертификаты:

Get-Childitem cert:\LocalMachine\root -Recurse | 
    Where-Object {$_.Issuer -ne $_.Subject}

В моей ситуации мы переместили эти неподписанные сертификаты в хранилище промежуточных центров сертификации (т.е. CA):

Get-Childitem cert:\LocalMachine\root -Recurse | 
    Where-Object {$_.Issuer -ne $_.Subject} | 
    Move-Item -Destination Cert:\LocalMachine\CA

Согласно KB 2801679: проблемы связи SSL/TLS после установки KB 931125 , возможно, у вас слишком много доверенных сертификатов. 

[T] Максимальный размер списка доверенных центров сертификации, который поддерживает пакет безопасности Schannel, составляет 16 килобайт (КБ). Наличие большого количества сторонних корневых центров сертификации превысит ограничение в 16 КБ, и у вас возникнут проблемы со связью TLS/SSL.

Решение в этой ситуации состоит в том, чтобы удалить все сертификаты центра сертификации, которым вы не доверяете, или прекратить отправку списка доверенных центров сертификации, установив для параметра реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\@SendTrustedIssuerList значение 0 (по умолчанию, если его нет, 1 ).

72
Aaron Jensen

В моем случае я добавлял корневой сертификат в хранилище сертификатов «текущий пользователь» на сервере и получал ошибку 403.16. 

Добавление моего корневого сертификата в хранилище Trusted Root Authorities для локальной машины решило проблему.

Следуйте приведенным ниже инструкциям на сервере с IIS.

Для Windows Server 2008 R2:

  1. Щелкните правой кнопкой мыши файл сертификата и выберите «Установить сертификат». Нажмите кнопку "Далее.
  2. Выберите «Поместить все сертификаты в следующий магазин» и нажмите «Обзор ...»
  3. Отметьте «Показать физические магазины»
  4. Разверните «Доверенные корневые центры сертификации» и выберите «Локальный компьютер». Нажмите ОК.
  5. Нажмите Далее/Нажмите Готово.

Для Windows Server 2012 R2:

  1. Щелкните правой кнопкой мыши файл сертификата и выберите «Установить Сертификат».
  2. Выберите «Локальный компьютер». Нажмите кнопку "Далее.
  3. Выберите «Поместить все сертификаты в следующий магазин» и нажмите «Обзор ...»
  4. Выберите «Доверенные корневые центры сертификации». Нажмите ОК.
  5. Нажмите Далее/Нажмите Готово.

Для Windows 7:

  1. Пуск -> Выполнить -> mmc.exe
  2. Файл -> «Добавить или удалить оснастки». Выберите «Сертификаты», нажмите «Добавить» и выберите «Учетная запись компьютера», а затем «Локальный компьютер». Нажмите Готово/ОК
  3. Разверните Сертификаты (локальный компьютер) -> Доверенные корневые центры сертификации -> Сертификаты. Щелкните правой кнопкой мыши Сертификаты и выберите Все задачи -> Импорт.
  4. Выберите файл сертификата и нажмите «Далее».
  5. Выберите «Поместить все сертификаты в следующий магазин» и нажмите «Обзор ...»
  6. Отметьте «Показать физические магазины»
  7. Разверните «Доверенные корневые центры сертификации» и выберите «Локальный компьютер». Нажмите ОК.
  8. Нажмите Далее/Нажмите Готово.
2
PST

Я получил эту ошибку в IIS Express:

Ошибка HTTP 403.16 - запрещено 

Ваш клиентский сертификат либо не является доверенным, либо является недействительным.

Глядя на TraceLogFiles я увидел следующую ошибку:

<RenderingInfo Culture="en-US">
 <Opcode>MODULE_SET_RESPONSE_ERROR_STATUS</Opcode>
 <Keywords>
  <Keyword>RequestNotifications</Keyword>
 </Keywords>
 <freb:Description Data="Notification">BEGIN_REQUEST</freb:Description>
 <freb:Description Data="ErrorCode">A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
(0x800b0109)</freb:Description>
</RenderingInfo>

Оказалось, когда я установил Razer Synapse, установка также поместила сертификат для chromasdk.io в доверенные корневые центры сертификации в разделе «Учетная запись компьютера -> Локальный компьютер». Я удалил это, и тогда все работало.

0
Ogglas