Взаимная проверка подлинности сертификатов возникает ошибка 403.16

Я использую Windows Server 2012 и IIS 8.5. Я установил SSL для веб-сайта, и параметры SSL: Require Required и Require Client Certificates.

сертификат клиента, который я отправляю на сервер, был выдан самозаверяющим органом (назовем его MyCompany CA). Сертификат ЦС MyCompany успешно установлен в доверенных корневых центрах сертификации локальной учетной записи компьютера. Это срок годности 2039, так что сертификат клиента срок годности.

однако со всей этой настройкой я получаю ошибку 403.16 в результате. Я включил правила трассировки неудачных запросов и сумел зарегистрировать ошибочный запрос и получил некоторые дополнительные сведения об этом:

52.- MODULE_SET_RESPONSE_ERROR_STATUS-предупреждение ModuleName-веб-ядро IIS Уведомление - BEGIN_REQUEST HttpStatus - 403 HttpReason-Запрещено HttpSubStatus-16 ErrorCode-обработанная цепочка сертификатов, но завершенная корневым сертификатом, который не доверенный поставщиком доверия. (0x800b0109) ConfigExceptionInfo

Я проверил несколько сайтов относительно результата 403.16 и кода ошибки 0x800b0109, и все они указывают на то, что центр сертификации не был установлен в локальных доверенных корневых центрах сертификации, но это не мой случай.

спасибо!

3 ответов


Я работал над этим в течение длительного времени и, наконец, нашел его!

Добавить новый ключ в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL Имя значения: ClientAuthTrustMode Тип значения: REG_DWORD Значение: 2

обновите веб-страницу, выберите сертификат и посмотрите, как происходит волшебство.

исследования

используя Windows 8 и IIS 8.5 я следовал инструкциям здесь http://itq.nl/testing-with-client-certificate-authentication-in-a-development-environment-on-iis-8-5/.

сертификаты были созданы в правильном месте и все настроено в IIS правильно, но я продолжал получать ошибки 403.16.

после многих статей MSDN и других попыток не удалось найти следующий параметр реестра.

установить HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL Имя значения: ClientAuthTrustMode Тип значения: REG_DWORD Значение: 2

установить HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL Имя значения: SendTrustedIssuerList Тип значения: REG_DWORD Значение data: 0 (False или полностью удалить этот ключ)

вот дополнительная информация об этом конкретном параметре (здесь:http://technet.microsoft.com/en-us/library/hh831771.aspx)

по умолчанию для режимов доверия Поставщик Schannel поддерживает три режима доверия проверки подлинности клиента. Режим доверия управляет тем, как выполняется проверка цепочки сертификатов клиента, и является общесистемным параметром, управляемым REG_DWORD "ClientAuthTrustMode" в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel.

0 доверие машины (по умолчанию) Требуется клиентский сертификат, выданный сертификат в надежных эмитентов список.

1 Исключительное Доверие Требуется, чтобы клиентский сертификат связывался с корневым сертификатом, содержащимся в указанном вызывающим пользователем хранилище доверенных эмитентов. Сертификат также должен быть выдан эмитентом в списке доверенных эмитентов

2 эксклюзивное доверие CA Требуется, чтобы цепочка сертификатов клиента была либо промежуточным сертификатом ЦС, либо корневым сертификатом в указанном вызывающим пользователем хранилище доверенных эмитентов. Сведения о сбоях проверки подлинности из-за доверенных эмитентов проблемы с конфигурацией, см. В статье базы знаний 280256.

надеюсь, что это сработает и для вас.


Я пробовал решение, предложенное выше, и оно отлично работает.

альтернативное решение, которое не включает редактирование реестра:

https://support.microsoft.com/en-us/help/2795828/lync-server-2013-front-end-service-cannot-start-in-windows-server-2012

основной смысл этой статьи-удалить все неподписанные сертификаты из доверенной корневой папки локального компьютера.

Если вы используйте групповые политики для развертывания сертификатов, убедитесь, что хранилище доверенных корневых центров сертификации содержит только самозаверяющие сертификаты (сертификаты, в которых свойство сертификата "субъект" совпадает со свойством сертификата "Эмитент"). Переместите все сертификаты, не являющиеся самозаверяющими сертификатами, из хранилища доверенных корневых центров сертификации в хранилище промежуточных центров сертификации.

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

вы можете найти все несамостоятельным сертификатов с помощью скрипта PowerShell:

Get-Childitem cert:\LocalMachine\root -Recurse | Where-Object {$_.Issuer -ne $_.Subject} | Format-List * | Out-File "c:\computer_filtered.txt"

переместите эти сертификаты в папку промежуточные центры сертификации в mmc.


Мне пришлось перезагрузить сервер, чтобы применить параметр ClientAuthTrustMode.