Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
Устаревшее и не поддерживаемое классическое приложение Internet Explorer 11 было окончательно отключено путем обновления Microsoft Edge в некоторых версиях Windows 10. Дополнительные сведения см. в разделе Часто задаваемые вопросы о прекращении поддержки программы для настольных компьютеров Internet Explorer 11.
Цель этой статьи — объяснить, как API криптографии пытается найти маршрут для успешной загрузки HTTP-адреса точки распространения CRL, а также помочь в решении проблем, связанных с извлечением CRL из сети.
Исходная версия продукта: Windows Server 2003 с пакетом обновления 2(SP2), Windows Vista Enterprise, Windows Server 2008 Корпоративная, Windows 7 Корпоративная, Windows Server 2008 R2 Корпоративная, Windows Server 10, Windows Server 2016, Windows Server 2019
Исходный номер базы знаний: 2623724
Итоги
Рассмотрим следующий сценарий. Приложение использует API WinINet, API WinHTTP или класс System.Net.HttpWebRequest платформы .NET для отправки HTTP-запроса по протоколу SSL/TLS. Во время согласования безопасного канала SSL/TLS сервер отправляет клиенту сообщение Server Hello с сертификатом сервера, чтобы подтвердить его удостоверение клиенту. При этом сведения о сертификате сервера также могут содержать список точек распространения списка отзыва сертификатов (CRL). Список точек распространения CRL содержит URL-адрес, с которого клиент может скачать сам CRL и проверить, был ли сертификат сервера отозван издателем сертификата.
КриптоAPI внутренне использует API WinHTTP для загрузки URL-адреса, основанного на HTTP, для точки распространения CRL. Перед скачиванием URL-адреса WinHTTP необходимо знать маршрут для доступа к URL-адресу CRL. В ситуациях, когда среда использует прокси-сервер, WinHTTP может автоматически обнаружить прокси-сервер или может быть запрошено приложением, использующим API WinHTTP, использовать конкретный прокси-сервер для скачивания списка отзыва сертификатов (CRL).
API шифрования внутренне пытается найти прокси-сервер сначала с помощью приведенной ниже логики, и если он находит любой адрес прокси-сервера, он просит WinHTTP использовать этот конкретный экземпляр прокси-сервера.
Если экземпляр прокси-сервера недоступен или неверен, WinHTTP не сможет скачать список отзыва сертификатов (CRL), проверка отзыва сертификатов завершится ошибкой, и ваше приложение получит сообщение об ошибке от Crypto API, указывающее на сбой отзыва. Он может сообщить о той же ошибке пользователю, и в зависимости от реализации установление безопасного канала может потерпеть неудачу.
При попытке обнаружить прокси-сервер API шифрования использует следующую логику:
Он проверяет наличие статических параметров прокси-сервера, настроенных на компьютере, с которого выполняется проверка CRL. Обычно эта конфигурация выполняется с помощью программы netsh для настройки прокси-сервера вручную в Windows Vista, Windows 2008, Windows 7 или Windows 2008 R2. Если обнаружен статический прокси-сервер, то API шифрования использует его для загрузки CRL через WinHttp. Дополнительные сведения о netsh см. в разделе "Команды Netsh" для Протокола передачи гипертекстов Windows (WINHTTP) в разделе "Дополнительные сведения" ниже.
Примечание.
Эта проверка выполняется только в Windows Vista, Windows 2008, Windows 7 и Windows 2008 R2. В Windows 2003 API шифрования не проверяет параметры статического прокси-сервера.
Если статически настроенный прокси-сервер не найден, API шифрования пытается получить параметры прокси-сервера Internet Explorer для контекста пользователя, в котором выполняется API шифрования.
В зависимости от того, с какой учетной записью запущен процесс, это может быть либо учетная запись текущего пользователя, вошедшего в систему, либо конкретного пользователя, либо одного из предоставленных системой аккаунтов — LOCAL SYSTEM, NETWORK SERVICE, LOCAL SERVICE. Следующие расположения реестра запрашиваются на основе исполняющего идентификатора:
- В настоящее время вошедший в систему пользователь:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- СЕТЕВАЯ СЛУЖБА:
HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- ЛОКАЛЬНАЯ СИСТЕМА:
HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- ЛОКАЛЬНАЯ СЛУЖБА:
HKEY_USERS\S-1-5-19\Software\Microsoft\Windows\CurrentVersion\Internet Settings
- Любой другой пользователь:
HKEY_USERS\<<SID of that user>>\Software\Microsoft\Windows\CurrentVersion\Internet Settings
В зависимости от сведений реестра будут возвращены параметры прокси-сервера для этого пользователя. Если параметры прокси-сервера отсутствуют, информация не будет возвращена. Если возвращаются параметры прокси-сервера, он может содержать сочетание следующих параметров:
- Автоматическое обнаружение параметров.
- Используйте скрипт автоматической настройки.
- Прокси-сервер.
Примечание.
В ситуациях, когда процесс выполняется под иной учетной записью, чем у текущего пользователя, вошедшего в систему, может возникнуть несоответствие в настройках прокси-сервера в зависимости от того, как они были настроены для этого пользователя. В таких случаях вы можете заметить, что доступ к расположению списка отзыва сертификатов с помощью Internet Explorer под учётной записью текущего пользователя позволяет успешно загрузить этот список, однако тот же процесс завершается неудачей при использовании криптографического API, который выполняется от имени другого пользователя. В таких ситуациях настоятельно рекомендуется проверить параметры Интернета всех пользователей и убедиться, что они согласованы.
В идеале, параметры Интернета не должны присутствовать для неинтерактивных пользователей, таких как NETWORK SERVICE, LOCAL SYSTEM или LOCAL SERVICE, так как никогда не потребуется открывать Internet Explorer под этими учетными данными. В таких случаях необходимо убедиться, что эти неинтерактивные пользователи не имеют параметров прокси-сервера, настроенных для Internet Explorer, или убедитесь, что они согласованы с параметрами прокси-сервера для пользователя, с которым скачивание CRL успешно выполнено с помощью Internet Explorer.
- В настоящее время вошедший в систему пользователь:
Если параметры прокси-сервера Internet Explorer отсутствуют для пользователя, выполняющего процесс, или если параметры Internet Explorer для идентификации процесса указаны неправильно. Автоматически обнаруживайте параметры или используйте скрипт автоматической настройки, API шифрования попытается автоматически обнаружить прокси-сервер для запроса CRL. Это приведет к возврату определенных сведений о прокси-сервере или возврату "без прокси-сервера", если автоматическое обнаружение прокси-сервера завершается ошибкой или если URL-адрес не требует прокси-сервера.
API шифрования попытается использовать API WinHTTP для скачивания URL-адреса CRL с помощью обнаруженного прокси-сервера (или нет прокси-сервера, если не удалось обнаружить прокси-сервер или если URL-адрес не требует прокси-сервера).
Если прокси-сервер недоступен или если сведения о прокси-сервере неверные, запрос URL-адреса списка отзыва сертификатов завершится ошибкой. Затем API шифрования сообщит об этой ошибке вызывающему API, и в зависимости от реализации вызывающий API криптографии может решить, следует ли прервать запрос или разрешить его.
Примечание.
В случаях, когда приложение использует API WinHTTP и устанавливает сведения о прокси-сервере либо в вызове WinHttpOpen, либо в вызове WinHttpSetOption, API шифрования не имеет доступа к данным прокси-сервера, заданным приложением, и по-прежнему пытается обнаружить сведения о прокси-сервере, как описано выше. Использование API WinHttp из API шифрования и из собственного приложения не зависит друг от друга и не делится информацией друг с другом.
В Windows 10 cryptoAPI 2 (CAPI2) обновляется таким образом, чтобы он не имеет собственных параметров прокси-сервера. Это изменение реализуется в вызове функции WinHttpOpen, где начиная с Windows 10 CAPI2 использует флаг WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY .
Имя флага | Описание |
---|---|
WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY (автоматический прокси-сервер) | Использует системные и пользовательские параметры прокси-сервера (включая конфигурацию прокси-сервера Internet Explorer), чтобы определить, какие прокси-серверы и прокси-серверы следует использовать. Автоматически пытается обрабатывать переключение на резервные при сбоях между несколькими прокси-серверами, разными конфигурациями прокси-серверов для каждого интерфейса и авторизацией. Поддерживается в Windows 8.1 и более поздней версии. |
Примечание.
Предыдущие версии Windows использовали флаг WINHTTP_ACCESS_TYPE_DEFAULT_PROXY .
Флаг WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY означает, что WinHttp будет обрабатывать логику обнаружения прокси-сервера, и вызывающий объект не должен писать код для обработки конфигурации прокси-сервера. Если установлен флаг WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY, WinHttp проверяет конфигурацию прокси-сервера по умолчанию с помощью программы netsh, а затем параметры прокси-сервера Internet Explorer.
Примечание.
Параметры прокси-сервера Internet Explorer устанавливаются для каждого пользователя, что означает, что вызывающая программа должна работать от имени вошедшего пользователя.
Если вы не хотите задать прокси-сервер для каждого пользователя, вошедшего в систему, можно настроить прокси на уровне компьютера, задав для ключа ProxySettingsPerUser значение 0.
Раздел реестра | HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\InternetSettings\ProxySettingsPerUser |
---|---|
Тип | REG DWORD |
Значение | 0: прокси-сервер на компьютере 1 или отсутствие значения: на пользователя |
После настройки ключа реестра вы можете настроить прокси-сервер с помощью параметров Интернета (Inetcpl.cpl). Параметры прокси-сервера на уровне компьютера можно изменить администраторами или с помощью групповой политики.
Дополнительная информация
Дополнительные сведения см. в разделе: