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

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

У меня есть действительный сертификат клиента, а также действительный сертификат CA. Сертификат CA устанавливается в доверенных корневых центрах на учетной записи компьютера Как на сервере, так и на клиентском компьютере, а сертификат клиента устанавливается в личной области текущей учетной записи Пользователя на клиентском компьютере.

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

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

сервер не настроен для отправки CTL, и у нас есть SendTrustedIssuerList = 0.

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

3 ответов


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}

В моей ситуации, мы перенесли эти самоподписанные сертификаты в промежуточные центры сертификации (т. е. ЦА) магазин:

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 килобайт (КБ). Наличие большого количества сторонних корневых сертификационных органов превысит предел 16k, и вы столкнетесь с проблемами связи TLS/SSL.

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


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

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

выполните следующие действия на сервере с IIS.

Для Windows Server 2008 R2:

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

Для Windows Server 2012 R2:

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

Для Windows 7:

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

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

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

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

смотреть на!--1--> я увидел следующую ошибку:

<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 В доверенных корневых центрах сертификации под учетной записью компьютера - > локальный компьютер. Я удалил это, а затем все работал.