Сертификат клиента не может быть отправлен приложением

При открытии сайтов в браузере иногда возникают ошибки – домен в адресной строке выделяется красным с зачеркиванием или ресурс вообще не открывается. Типовая причина скрывается в сбоях работы сертификата SSL. Исправить их может только администратор сайта, но перед обращением к нему стоит проверить собственный компьютер.

А еще тут будет парочка забавных (и не очень) пикч и анимаций на тему описанных ошибок. Хоть какое-то развлечение.

Появление сообщения об ошибке 401 Unauthorized Error («отказ в доступе») при открытии страницы сайта означает неверную авторизацию или аутентификацию пользователя на стороне сервера при обращении к определенному url-адресу. Чаще всего она возникает при ошибочном вводе имени и/или пароля посетителем ресурса при входе в свой аккаунт. Другой причиной являются неправильные настройки, допущенные при администрировании web-ресурса. Данная ошибка отображается в браузере в виде отдельной страницы с соответствующим описанием. Некоторые разработчики интернет-ресурсов, в особенности крупных порталов, вводят собственную дополнительную кодировку данного сбоя:

  • 401 Unauthorized;
  • Authorization Required;

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

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

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

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

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

Что такое SSL

Текущие тенденции сайтостроения предполагают высокую безопасность соединения пользователя с веб-ресурсом. Это необходимо для защиты персональных данных, секретных номеров банковских карт и информации о проводимых сделках. Организуется безопасность подключением протокола шифрования Secure Sockets Layer (сокращенно SSL).

Сертификат клиента не может быть отправлен приложением

  • Сертификат выпускается доверенным центром Certification Authority (CA).
  • После выдачи он подключается к домену средствами провайдера хостинга.
  • Срок его действия ограничен 1 годом, после чего требуется продление.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

У меня есть служба WCF и клиентское приложение, которое подключается к службе.

Эта ошибка произошла после того, как я попытался просмотреть службу в веб-браузере.

  • Как сделать его доверенным на веб-сервере?
  • Нужно ли мне вносить какие-либо изменения в конфигурацию сервера и клиента?
  • Проблема в том, как я создавал сертификаты?

Вот шаги, которые я предпринял до сих пор, чтобы попытаться заставить его работать:

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

  • Я также поместил WCFServerTestCert в Сертификат доверенного корня.
    Органы власти.
  • Установите в настройках SSL значение «Требовать SSL» и выберите «Принять».
  • Перезапустил пул приложений и приложение

Вот конфигурация веб-службы / сервера:

Вот веб-конфигурация для клиента. Конфигурация клиентского приложения.

В прошлый раз, когда я проверял, IIS использовал повторное согласование (по умолчанию) для получения сертификата клиента: есть первое рукопожатие, когда сервер не запрашивает сертификат клиента, за которым следует другое рукопожатие (на этот раз зашифрованное), когда сервер запрашивает сертификат (через CertificateRequestсообщение TLS ). Это не позволит вам видеть что-либо из Wireshark, если вы не настроите его для использования закрытого ключа сервера и расшифровки трафика (обратите внимание, что это работает только с некоторыми наборами шифров).

Один из способов увидеть согласование сертификата клиента — настроить IIS для использования первоначального согласования сертификата клиента, используя netsh и clientcertnegotiation = true (что касается начального согласования). По крайней мере, CertificateRequestи сертификат будет отправлен в открытом виде во время рукопожатия, поэтому вы сможете увидеть это с помощью Wireshark. Если клиент не отправляет сертификат на сервер в ответ на запрос CertificateRequest, вы все равно увидите пустое Certificateсообщение от клиента.

Если вы не экспортируете закрытый ключ с сертификатом для использования с Fiddler или любым другим клиентом, нет никаких шансов, что он сможет использовать сертификат. В лучшем случае он может попытаться отправить сертификат, но рукопожатие не удастся (поскольку CertificateVerifyсообщение должно быть подписано закрытым ключом клиента).

Я думаю, вы можете столкнуться с проблемой, при которой:

  • отсутствие сертификата принимается сервером (фактически это необязательно),
  • представляя недействительный сертификат дает сбой и вызывает этот 403,7 код состояния (много серверов и SSL / TLS стеки бы осуществить это как фатальная ошибка, ноне говорит , чтоunsupported_certificatecertificate_revokedcertificate_expiredcertificate_unknownдолжно быть фатальным, так что это на сервера осмотрительность).

Мы используем клиентские сертификаты для проверки аппаратных устройств, подключающихся к нашему API. Для сравнения, наши устройства поставляются с SSL-сертификатом при производстве, и этот сертификат подписан нами самостоятельно. Когда внешнее устройство пытается подключиться к нашему API, мы обрабатываем проверку сертификата клиента в самом приложении. NET API.

Для этого требуются следующие настройки IIS SSL, а также ручной шаг для повторной привязки SSL (что мы делаем для очень конкретного технического ограничения).

Итак, во-первых, в файле web. config у нас есть эта конфигурация:

Если мы добавим SslNegotiateCert или SslRequireCert sslFlags, то IIS попытается проверить сертификат клиента еще до того, как будет вызван код нашего приложения. Поэтому мы устанавливаем только флаг SSL.

Во-вторых, в настройках SSL сайта IIS выставляем:

Таким образом, мы не просим IIS согласовать клиентские сертификаты от нашего имени.

Последнее изменение конфигурации, которое мы вносим, ​​заключается в том, чтобы включить «согласование сертификата клиента» в привязке SSL. По умолчанию при создании привязки SSL в IIS для свойства «Согласовать сертификат клиента» установлено значение false.

Насколько я понимаю, это означает, что IIS не будет согласовывать клиентские сертификаты при первоначальном согласовании TLS. Что произойдет, если потребуются клиентские сертификаты, инициируется повторное согласование TLS, и сервер запросит клиентский сертификат у клиента.

В нашем случае наши устройства передают сертификат клиента по первоначальному запросу и не будут обрабатывать повторное согласование TLS. Таким образом, включив «Переговоры с сертификатом клиента», клиентские сертификаты могут быть переданы в начальном запросе.

Таким образом, повторное связывание SSL-привязки требует некоторой магии командной строки, чтобы найти текущую привязку, удалить ее и прочитать привязку на этот раз с включенным «Переговоры с сертификатом клиента».

Шаг 1. Найдите свою привязку SSL:

Выполните следующую команду в терминале CMD:

Это поместит все детали ваших текущих привязок SSL в sslcerts. txt.

Файл будет выглядеть следующим образом:

Причины появления ошибки сервера 401 и способы ее устранения на стороне пользователя

При доступе к некоторым сайтам (или отдельным страницам этих сайтов), посетитель должен пройти определенные этапы получения прав:

  • Аутентификация («authentic») – проверка того, что вы знаете пароль от этой учетной записи.
  • Авторизация – проверка вашей роли (статуса) в системе и решение о предоставлении доступа к запрошенной странице или ресурсу на определенных условиях.

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

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

Некоторые крупные интернет-ресурсы с большим количеством подписчиков используют дополнительные настройки для обеспечения безопасности доступа. К примеру, ваш аккаунт может быть заблокирован при многократных попытках неудачной авторизации. Слишком частые попытки законнектиться могут быть восприняты как действия бота. В этом случае вы увидите соответствующее сообщение, но можете быть просто переадресованы на страницу с кодом 401. Свяжитесь с администратором сайта и решите проблему.

Иногда простая перезагрузка проблемной страницы, выход из текущей сессии или использование другого веб-браузера полностью решают проблему с 401 ошибкой авторизации.

Приведенный ниже код является простым воспроизведением с простым запросом GET.

Я получаю наше любимое исключение: «Не удалось создать безопасный канал SSL / TLS». Обычно проблемы такого типа указывают на проблемы с разрешениями на закрытый ключ сертификата. Я перепробовал все, что мог придумать, чтобы убедиться, что все это настроено правильно, но, возможно, я что-то пропустил. Короче говоря, удаленный сервер отправляет TLS CertificateRequestсо списком, который, кажется, правильно идентифицирует мой клиентский сертификат, но мое приложение не отвечает ни одним клиентским сертификатом.

Вот моя установка:

  • Windows 7 профессиональная 64-битная
  • Возможность воспроизвести проблему в приложении ASP.NET MVC 3 / .NET 4, запущенном на сервере разработки Visual Studio, приложении ASP.NET WebForms / .NET 3.5, запущенном в локальном IIS, и в консольном приложении .NET / .NET 4
  • Недавно был установлен Microsoft .NET Framework 4.5. Еще не исследовал, может ли это быть проблемой

Вот все, что я пробовал и что знаю:

  • Этот код, похоже, отлично работал при работе на машине с Windows XP.
  • Я убедился, что мой клиентский сертификат импортирован в локальный компьютер, в хранилище личных сертификатов, а разрешения закрытого ключа правильно настроены для меня и всех соответствующих пользователей IIS.
  • Я несколько раз пытался переустановить сертификат на свой компьютер.
  • Я подтвердил, что приложение .NET может получить доступ к сертификату X509 иHasPrivateKey
  • Убедился, что мой клиентский сертификат действителен. На самом деле это сертификат SSL для веб-сервера, на котором будет работать это приложение.
  • PreAuthenticate = trueобъект запроса. Не имело значения
  • ServicePointManager.Expect100Continue = false, разницы не было
  • Я пробовал установитьServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3, но, видимо, удаленному серверу требуется TLS, так что это не помогает
  • ServicePointManager.ServerCertificateValidationCallbackделегата, чтобы он всегда возвращал истину. Но запрос не выполняется раньше в рукопожатии TLS, прежде чем он даже дойдет до вызова этого делегата.
  • Когда я перехожу по URL-адресу в Chrome, он просит меня предоставить сертификат клиента, представляет правильный сертификат клиента в качестве выбора, я выбираю этот сертификат и получаю действительный ответ. Также работает правильно, когда я создаю запрос в Fiddler. Так что это определенно похоже на проблему с моим .NET-кодом, а не с самим сертификатом или удаленным сервером и т. Д.
  • У поставщика, с которым я работаю, такая же служба настроена на другом удаленном сервере, и для этой службы требуется другой сертификат клиента. Итак, я попробовал то же самое с другим URL-адресом и сертификатом клиента и получил тот же сбой.
Читать также:  Военный сертификат на приобретение жилья условия получения 2021

Я добавил трассировку System. Net и увидел следующее:

SecureChannel#26717201 — Left with 0 client certificates to choose from.

InitializeSecurityContext(In-Buffers count=2, Out-Buffer length=0, returned code=CertUnknown).

Я включил полное ведение журнала SCHANNEL и увидел это предупреждение:

The remote server has requested SSL client authentication, but no suitable client certificate could be found. An anonymous connection will be attempted. This SSL connection request may succeed or fail, depending on the server’s policy settings.

Я запустил Wireshark и увидел, что удаленный сервер отправил CertificateRequest, и, похоже, есть Distinguished Nameзапись с точно указанными значениями CN OU O моего клиентского сертификата. После этого мое приложение отправляет ответ сертификата без сертификатов.

Похоже, мне что-то не хватает при настройке этого сертификата для правильной работы с приложениями. NET в Windows 7. Я предполагаю, что на моем новом компьютере с Windows 7 есть что-то другое по сравнению с машиной XP, что вызывает потерпеть неудачу сейчас. В настоящий момент у меня нет доступа к среде Windows XP, чтобы подтвердить это; Я сделаю это через пару дней, но очень хотел бы решить эту проблему как можно скорее.

Любые идеи будут очень признательны. Спасибо!

ИЗМЕНИТЬ Как описано выше, при подключении к URL-адресу в Chrome браузер запрашивает у меня сертификат клиента, и я могу предоставить правильный сертификат и успешно подключиться. Однако я не могу успешно сделать это в Internet Explorer (9). Я просто получаю «Internet Explorer не может отобразить веб-страницу» без каких-либо других подсказок или объяснений. Мне сказали, что это может иметь значение, так как WebRequest. Createимеет поведение, аналогичное IE. Я изучаю, что это может означать, но буду ценить любые мысли по этому поводу.

ИЗМЕНИТЬ Также я должен отметить, что удаленный сервер использует самозаверяющий сертификат SSL. Первоначально я думал, что это может быть проблемой, поэтому я добавил сертификат в качестве доверенного корня в MMC, чтобы сертификат выглядел как действительный на моей машине. Это не устранило проблему.

Я получаю наше любимое исключение: «Не удалось создать безопасный канал SSL / TLS». Обычно проблемы такого типа указывают на проблемы с разрешениями на закрытый ключ вашего сертификата. Я перепробовал все, что мог придумать, чтобы убедиться, что все это настроено правильно, но, возможно, я что-то пропустил. Короче говоря, удаленный сервер отправляет TLS CertificateRequest со списком, который, кажется, правильно идентифицирует мой клиентский сертификат, но мое приложение не отвечает ни одним клиентским сертификатом.

Вот моя настройка:

  • Windows 7 профессиональный бит 64
  • Возможность воспроизвести проблему в приложении ASP.NET MVC 3 / .NET 4, запущенном на сервере разработки Visual Studio, приложении ASP.NET WebForms / .NET 3.5, запущенном в локальном IIS, и в консольном приложении .NET / .NET 4
  • Недавно был установлен Microsoft .NET Framework 4.5. Еще не исследовал, может ли это быть проблемой
  • Этот код, казалось, работал нормально при запуске на компьютере с Windows XP.
  • Я убедился, что мой клиентский сертификат импортирован в локальный компьютер, в хранилище личных сертификатов, а разрешения закрытого ключа правильно настроены для меня и всех соответствующих пользователей IIS.
  • Я несколько раз пытался переустановить сертификат на свой компьютер.
  • Я подтвердил, что приложение .NET может получить доступ к сертификату X509 и HasPrivateKey = правда
  • Убедился, что мой клиентский сертификат действителен. На самом деле это сертификат SSL для веб-сервера, на котором будет работать это приложение.
  • Я поставил PreAuthenticate = true в объекте запроса. Не имело значения
  • Я пробовал установить ServicePointManager.Expect100Continue = false, не имело значения
  • Я пробовал установить ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3, но, очевидно, удаленному серверу требуется TLS, поэтому это не помогает
  • Я установил ServicePointManager.ServerCertificateValidationCallback делегат всегда возвращать истину. Но запрос не выполняется раньше в рукопожатии TLS, прежде чем он даже дойдет до вызова этого делегата.
  • Когда я перехожу по URL-адресу в Chrome, он просит меня предоставить сертификат клиента, представляет правильный сертификат клиента в качестве выбора, я выбираю этот сертификат и получаю действительный ответ. Также работает правильно, когда я создаю запрос в Fiddler. Так что это определенно проблема с моим .NET-кодом, а не с самим сертификатом или удаленным сервером и т. Д.
  • У поставщика, с которым я работаю, такая же служба настроена на другом удаленном сервере, и для этой службы требуется другой сертификат клиента. Итак, я попробовал то же самое с другим URL-адресом и сертификатом клиента и получил тот же сбой.

я добавил System. Net трассировка и увидел это:

SecureChannel # 26717201 — У нас есть сертификаты, предоставленные пользователями. Сервер указал 6 эмитентов. Ищем сертификаты, соответствующие любому из издателей.

SecureChannel # 26717201 — Осталось 0 клиентских сертификатов на выбор.

InitializeSecurityContext (количество входящих буферов = 2, длина выходного буфера = 0, возвращаемый код = CertUnknown).

Я включил полный SCHANNEL ведение журнала, и увидел это предупреждение:

Удаленный сервер запросил аутентификацию клиента SSL, но не удалось найти подходящий сертификат клиента. Будет предпринята попытка анонимного подключения. Этот запрос на соединение SSL может быть успешным или неудачным в зависимости от настроек политики сервера.

Я запустил Wireshark и увидел, что удаленный сервер отправил CertificateRequest, и, кажется, Distinguished Name запись с точно указанными значениями CN OU O моего клиентского сертификата. После этого мое приложение отправляет ответ с сертификатом без сертификатов.

Похоже, мне что-то не хватает при настройке этого сертификата для правильной работы с приложениями. NET в Windows 7. Я предполагаю, что на моем новом компьютере с Windows 7 есть что-то другое, по сравнению с машиной XP, что вызывает это потерпеть неудачу сейчас. В настоящий момент у меня нет доступа к среде Windows XP, чтобы подтвердить это; Я сделаю это через пару дней, но очень хотел бы решить эту проблему как можно скорее.

РЕДАКТИРОВАТЬ Как описано выше, при подключении к URL-адресу в Chrome браузер запрашивает у меня сертификат клиента, и я могу предоставить правильный сертификат и успешно подключиться. Однако я не могу успешно сделать это в Internet Explorer (9). Я просто получаю «Internet Explorer не может отобразить веб-страницу» без каких-либо других подсказок или объяснений. Мне сказали, что это может иметь отношение к WebRequest. Create имеет поведение, аналогичное IE. Я изучаю, что это может означать, но буду благодарен за любые мысли по этому поводу.

РЕДАКТИРОВАТЬ Также следует отметить, что удаленный сервер использует самозаверяющий сертификат SSL. Первоначально я думал, что это может быть проблемой, поэтому я добавил сертификат в качестве доверенного корня в MMC, чтобы сертификат выглядел как действительный на моей машине. Это не устранило проблему.

Причины появления ошибок SSL

Существует всего две причины, почему браузер отображает ошибку сертификата SSL со стороны сервера. Первая заключается в окончании срока активации, вторая – это покупка сертификата у поставщика без достаточных полномочий для выдачи «полноценной защиты». Например, виной может быть выбор самоподписанного сертификата, лишь эмулирующего работу реального протокола.

Остальные проблемы обычно скрываются на локальном компьютере:

  • Произошел сброс системного времени.
  • Неправильно настроена антивирусная программа.
  • Сбоит браузер или установленное расширение.
  • Срабатывает вредоносный скрипт.

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

Изредка встречаются ситуации, когда проблема возникла со стороны администратора, если он ошибся при подключении нового сертификата или забыл продлить его действие. Обычно такие неполадки устраняются быстро, потому что после активации сайт проверяется и, в случае неработоспособности сертификата, проводится повторное подключение вплоть до получения положительного результата.

Время и дата

Сертификат SSL имеет четко обозначенный срок действия с датой активации и деактивации. Такой подход отчасти дает дополнительную защиту, потому что в случае технического сбоя в системных часах компьютера сайты перестают открываться. Сброс времени обычно происходит «назад», на дату изготовления материнской платы, на что и реагирует система.

Варианты исправления ситуации:

  • Вручную внести корректную дату и время, после чего обновить страницу в браузере.
  • Воспользоваться функцией синхронизации через интернет, встроенной в Windows.
  • Заменить батарейку на памяти BIOS. При первом запуске ПК нужно внести корректные данные.

Каждый раз после изменения времени рекомендуется ручное обновление страницы или перезапуск браузера. Такой шаг активирует повторное соединение с сервером и позволяет зайти на сайт «с нуля», но уже с правильным временем, соответствующим сроку действия сертификата SSL (после активации и до ее завершения).

Настройки антивируса и брандмауэра

Сертификат клиента не может быть отправлен приложением

  • Полностью выключить антивирусную программу. Перезагрузить ПК, открыть страницу.
  • Сбросить настройки брандмауэра. Опять проводится перезапуск компьютера и веб-ресурса.

Функция временного отключения имеется в любой защитной программе, даже интегрированной в операционную систему Windows. Но это не гарантирует полную деактивацию приложения. В этом случае разобраться в ситуации поможет открытие сайта на другом компьютере или запуск безопасного режима (актуально для проводного подключения к интернету).

Браузер и операционная система

Наличие проблемы с браузером проще всего определить открытием сайта на другом устройстве или в другой программе. Иногда решение заключается в банальном обновлении версии приложения до актуальной. То же относится к операционной системе, если используется интегрированный браузер вроде Edge. Пакеты обновлений для того и выпускаются, чтобы устранять неполадки в ПО.

Сертификат клиента не может быть отправлен приложением

  • Полностью очистить историю браузера вместе с кэшем и другими данными.
  • Временно отключить все ранее установленные и активные расширения.
  • Переустановить программу после ее полной деинсталляции.

Остается еще один вариант – сбросить настройки браузера до состояния «по умолчанию». Способ аналогичен переустановке, но экономит время. Правда, он неэффективен, если проблема возникла из-за сбоя в одном из служебных файлов программы. Отдельное внимание стоит уделить расширению, выполняющему функции антивирусной защиты, ведь оно часто блокирует даже безопасное соединение.

Заражение компьютерными вирусами

Сертификат клиента не может быть отправлен приложением

  • Временно отключить все программы из автозагрузки.
  • Провести очистку диска от временных файлов.
  • Перезагрузить компьютер после предыдущих шагов.

Выполняются перечисленные действия программами типа CCleaner. Они дают прямой доступ как к автозагрузке операционной системе, так и к списку расширений установленных браузеров. Также в таких программах обычно есть функция удаления ненужных системных файлов, в которых запросто может быть тело компьютерного вируса.

Если предложенные способы устранения ошибки SSL не помогли, остается ждать, пока проблему устранит администратор, или воспользоваться любым другим тематическим сайтом с аналогичным контентом.

В этом разделе
  • Создание сертификата SSL
  • Привязка сертификата к веб-сайту
  • Проверка сайта

Протокол SSL представляет собой стандартную технологию безопасности, которая используется для установления шифрованного соединения между веб-сервером и веб-клиентом. SSL позволяет безопасно обмениваться данными благодаря идентификации и проверки подлинности сервера, а также обеспечению конфиденциальности и целостности всех передаваемых данных. Поскольку SSL предотвращает перехват или взлом данных, отправляемых по сети, его необходимо использовать со всеми механизмами регистрации или аутентификации, а также во всех сетях, в которых происходит обмен конфиденциальной информацией.

Читать также:  При посадке на самолет в России в январе 2023 года будет проведен ПЦР-тест

Для использования SSL необходимо получить сертификат SSL и связать его с веб-сайтом, на котором установлен Web Adaptor. Каждый веб-сервер имеет собственную процедуру загрузки сертификата и его привязки к веб-сайту.

Создание сертификата SSL

Для создания SSL-соединения между Web Adaptor и сервером, веб-серверу требуется сертификат SSL. Сертификат SSL – это цифровой файл, содержащий информацию об удостоверении веб-сервера. Он также содержит метод шифрования, который используется при создании защищенного канала между веб-сервером и ArcGIS Server. Сертификат SSL должен создаваться владельцем веб-сайта и иметь цифровую подпись. Существует три типа сертификатов, подписанные центром сертификации (CA), домена и самозаверяющийся, которые описываются ниже.

Сертификаты, подписанные центром сертификации (CA)

Сертификаты, подписанные центром сертификации (CA), следует использовать для производственных систем, особенно если к развертыванию ArcGIS Server предполагается доступ пользователей извне вашей организации. Например, если сервер не защищен файрволом и доступен через Интернет, использование сертификата, подписанного центром сертификации (CA) гарантирует пользователям вне организации, что идентичность веб-сайта подтверждена.

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

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

Сертификаты домена

Если сервер находится за файрволом и использование подписанного CA сертификата невозможно, воспользуйтесь сертификатом домена. Доменный сертификат – это внутренний сертификат, подписанный CA вашей организации. Использование сертификатов домена помогает снизить стоимость выпуска сертификатов и облегчает их развертывание, поскольку сертификаты быстро генерируются в вашей организации для доверительного внутреннего пользования.

Пользователи, находящиеся в вашем домене, не увидят предупреждений или неожиданного поведения веб-браузера, обычно связанных с использованием самозаверенных сертификатов, поскольку веб-сайт был проверен сертификатом домена. Однако сертификаты домена не проверяются внешней CA, это означает, что пользователи, заходящие на сайт извне домена, не смогут проверить подлинность вашего сертификата. Внешние пользователи увидят в веб-браузере сообщения об отсутствии доверия к сайту, пользователь может считать, что зашел на вредоносный сайт и уйти с него.

Создание доменного сертификата в IIS

В Manager IIS выполните следующие шаги, чтобы создать сертификат домена:

  • На панели Подключения (Connections) выберите ваш сервер в дереве каталога и дважды щелкните Сертификаты сервера (Server Certificates).
  • На панели Действия (Actions) щелкните Создать сертификат домена (Create Domain Certificate).
  • В диалоговом окне Свойства отличительного имени (Distinguished Name Properties) введите обязательную для сертификата информацию:В поле Общее имя (Common name) введите полное доменное имя компьютера, например, gisserver.domain.com.Заполните другие параметры, указав данные вашей организации и расположения.
  • В поле Общее имя (Common name) введите полное доменное имя компьютера, например, gisserver.domain.com.
  • Заполните другие параметры, указав данные вашей организации и расположения.
  • Щелкните Далее (Next).
  • В диалоговом окне Cертифицирующая организация (Online Certification Authority) щелкните Выбрать (Select) и выберите сертифицирующую организацию в пределах домена, которая будет подписывать сертификат. Если эта опция не доступна, введите сертифицирующую организацию домена в поле Укажите сертифицирующую организацию (Specify Online Certification Authority), например, City Of Redlands Enterprise RootREDCASRV.empty.local. Если вам необходима помощь в этом шаге, обратитесь к системному администратору.
  • Введите удобное имя сертификата домена и щелкните Завершить (Finish).

Последний шаг – связать сертификат домена с SSL-портом 443. Инструкции см. в разделе Привязка сертификата к веб-сайту.

Самозаверяющие сертификаты

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

Создание самозаверяющегося сертификата в IIS

В Manager IIS выполните следующие шаги, чтобы создать самозаверяющийся сертификат:

  • На панели Подключения (Connections) выберите ваш сервер в дереве каталога и дважды щелкните Сертификаты сервера (Server Certificates).
  • На панели Действия (Actions) щелкните Создать самозаверяющий сертификат (Create Self-Signed Certificate).
  • Введите удобное имя для нового сертификата и нажмите OK.

Последний шаг – связать самозаверяющийся сертификат с SSL-портом 443. Инструкции см. в разделе Привязка сертификата к веб-сайту.

Привязка сертификата к веб-сайту

После создания сертификата SSL необходимо привязать его к веб-сайту, на котором установлен Web Adaptor. Привязка означает процесс настройки сертификата SSL для использования порта 443 на веб-сайте. Инструкции по привязке сертификата к веб-сайту отличаются в зависимости от платформы и версии веб-сервера. Если вам необходимы инструкции, обратитесь к системному администратору или изучите документацию веб-сервера. Например, шаги для привязки сертификата в IIS см. ниже.

Привязка сертификата к порту 443 в IIS

В Manager IIS выполните следующие шаги, чтобы связать сертификат с SSL-портом 443:

  • Выберите ваш сайт в дереве каталога и на панели Действия (Actions) щелкните Связи (Bindings).Если порт 443 отсутствует в списке Связи, щелкните . В ниспадающем списке выберите . Оставьте порт 443.Если порт 443 имеется в списке, выберите его и щелкните .
  • Если порт 443 отсутствует в списке Связи, щелкните . В ниспадающем списке выберите . Оставьте порт 443.
  • Если порт 443 имеется в списке, выберите его и щелкните .
  • В ниспадающем списке сертификат SSL выберите имя вашего сертификата и щелкните OK.

Проверка сайта

Более подробно о тестировании сайта с SSL см. в инструкциях Microsoft по настройке SSL в IIS.

Отзыв по этому разделу?

Устранение ошибки 401 администратором веб-ресурса

Для владельцев сайтов, столкнувшихся с появлением ошибки отказа доступа 401, решить ее порою намного сложнее, чем обычному посетителю ресурса. Есть несколько рекомендаций, которые помогут в этом:

  • Обращение в службу поддержки хостинга сайта. Как и в случае возникновения проблем с провайдером, лучше всего подробно описать последовательность действий, приведших к появлению ошибки 401, приложить скриншот.
  • При отсутствии проблем на стороне хостинг-провайдера можно внести следующие изменения в настройки сайта с помощью строки Disallow:/адрес проблемной страницы. Запретить индексацию страницам с ошибкой в «rоbоts.txt», после чего добавить в файл «.htассеss» строку такого типа:

Таким образом вы перенаправите пользователей со всех страниц, которые выдают ошибку 401, на страницу начальной авторизации.

Хотя ошибка 401 и является проблемой на стороне клиента, ошибка пользователя на стороне сервера может привести к ложному требованию входа в систему. К примеру, сетевой администратор разрешит аутентификацию входа в систему всем пользователям, даже если это не требуется. В таком случае сообщение о несанкционированном доступе будет отображаться для всех, кто посещает сайт. Баг устраняется внесением соответствующих изменений в настройки.

Дополнительная информация об ошибке с кодом 401

Веб-серверы под управлением Microsoft IIS могут предоставить дополнительные данные об ошибке 401 Unauthorized в виде второго ряда цифр:

  • 401, 2 – ошибка входа в систему из-за конфигурации сервера;
  • 401, 3 – несанкционированный доступ из-за ACL на ресурс;

Более подробную информацию об ошибке сервера 401 при использовании обычной проверки подлинности для подключения к веб-узлу, который размещен в службе MS IIS, смотрите здесь.

Следующие сообщения также являются ошибками на стороне клиента и относятся к 401 ошибке:

  • 400 Bad Request;
  • 403 Forbidden;
  • 404 Not Found;
  • 408 Request Timeout.

Как видим, появление ошибки авторизации 401 Unauthorized не является критичным для рядового посетителя сайта и чаще всего устраняется самыми простыми способами. В более сложной ситуации оказываются администраторы и владельцы интернет-ресурсов, но и они в 100% случаев разберутся с данным багом путем изменения настроек или корректировки html-кода с привлечением разработчика сайта.

Привязки сертификатов SSL

Обратите внимание, что ваш файл sslcerts. txt будет содержать много экземпляров этих привязок. Вам нужно найти правильный для приложения/сайта, с которым вы работаете.

Обратите внимание, что в приведенном выше выводе отображается «Обсуждение сертификата клиента: отключено».

Шаг 2 — Удалить текущую привязку

Выполните следующую команду, чтобы удалить текущую привязку

Это удалит привязку SSL для сайта.

Шаг 3. Перепривяжите SSL с включенным параметром «Переговоры с сертификатом клиента».

Выполните следующую команду в командной строке CMD:

Обратите внимание, что здесь вы заполняете свойства привязки из сведений, полученных в sslcerts. txt, за исключением того, что вы устанавливаете clientcertnegotiation=Enable

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

Затем мы используем AuthorizationFilterAttribute, чтобы получить сертификат клиента и проверить его на основе наших правил.

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

Ошибки со стороны клиента (4xx)

Для начала перечислим коды ошибок на стороне клиента. Вина за их появление ложится на плечи обоих участников соединения.

400 Bad Request

Эта ошибка сообщает клиенту о том, что для успешного выполнения запроса ему необходимо оплатить доступ к серверу. Изначально код 402 должен был стать неким стандартом для цифровой валюты и оплаты контента в сети. Но не срослось. До сих пор нет единого решения по поводу того, как должны выглядеть платежи в сети. Также нет и единого решения по поводу того, как стоит использовать 402.

Все еще считается, что код существует с расчетом на будущее. Сейчас почти не используется и поддерживается не всеми браузерами.

Творчество на тему знаменитой киносаги

404 Not Found

Легендарная ошибка, ставшая популярным мемом. 404 оповещает клиента о том, что его запрос ведет в никуда. Код возникает, когда пользователь пытается попасть на страницу, которой не существует. Например, когда случайно ошибается при вводе ссылки и вводит ее с опечаткой. Или же пытается получить доступ к странице, которой на сайте уже нет.

В отличие от других кодов, страницу с 404 частенько кастомизируют, создавая для нее уникальный дизайн. Мало того, что это выглядит симпатичнее, так еще и полезнее для посетителей. Можно прямо на странице с ошибкой разъяснить, что произошло и как дальше действовать.

Читать также:  Сертификат соответствия тр тс 019 2011 о безопасности средств индивидуальной защиты скачать

Сертификат клиента не может быть отправлен приложением

И таких вариаций тысячи. Каждый пытается добавить в оформление что-то свое.

405 Method Not Allowed

405 сообщает клиенту о том, что метод, используемый при запросе, не разрешен. В качестве примера можно привести попытку со стороны клиента ввести данные в форму с помощью GET, когда она работает только с POST. Ну и в таком же духе.

406 Not Acceptable

Ошибка 406 сообщает о том, что страница передает контент, который не может быть распознан клиентом. Возможно, проблема в методе сжатия или в формате страницы. Иногда сюда же приплетают неправильные настройки кодировки.

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

407 Proxy Authentication Required

408 говорит нам о том, что сервер пожелал разорвать соединение с клиентом, потому что оно никак не используется. Происходит это в том случае, если сервер буквально устал ждать, пока наладится соединение с ним. Поэтому такую ошибку часто можно лицезреть после очень долгой и безуспешной загрузки какого-нибудь сайта.

Многие серверы не отправляют никаких сообщений, а просто прерывают соединение по той же причине. На запрос уходит больше времени, чем на то полагается.

Сертификат клиента не может быть отправлен приложением

409 Conflict

Сообщение о конфликте возникает, когда запрос со стороны клиента не соответствует тому, чего ожидает сервер. В качестве примера приводят проблемы при проверки версий, когда пользователь пытается с помощью метода PUT загрузить на сервер новый файл, но там уже имеется более новая версия того же файла. Конфликта версий можно легко избежать, загрузив корректную версию.

410 Gone

Своего рода аналог 404. Разница лишь в том, что 410 намекает на перманентность отсутствия страницы. Так что этот код стоит использовать, когда на 100% уверен, что страница ушла в небытие (ну или с текущего адреса) навсегда. В любом другом случае есть универсальный 404.

411 Length Required

411 оповещает пользователя о том, что сервер не желает принимать запрос со стороны клиента, потому что в нем не определен заголовок Content-Length. Да, это первый код в подборке, который смогут понять только люди, сведущие в настройке серверов. По-простому уложить сущность HTML-заголовков в этот материал не получится.

412 Precondition Failed

Еще один код, сообщающий о том, что сервер отклонил запрос пользователя и не разрешает доступ к выбранному ресурсу. Проблемы возникают при неправильной настройке работы методов, отличающихся от GET и HEAD.

413 Payload Too Large/Request Entity Too Large

Код 413 говорит нам, что запрос, который посылает клиент на сервер, слишком большой. Поэтому сервер отказывается его обрабатывать и разрывает соединение. Обычно это происходит при попытке загрузить на ресурс какой-то файл, превышающий ограничение, выставленное в настройках сервера. Соответственно, решается проблема изменением настроек сервера.

414 URI Too Long

Чем-то этот код похож на предыдущий. Здесь тоже идет речь о превышение лимита. Только теперь это касается не запроса со стороны клиента, а длины URI. То есть ссылки. Выходит, что адрес, используемый клиентом, больше, чем тот, что может обработать сервер. Как-то так.

Такая ошибка иногда выскакивает при попытке взломать ресурс. Сайт так реагирует на слишком частые попытки воспользоваться потенциальными дырами в безопасности.

415 Unsupported Media Type

Ошибка 415 возникает, когда клиент пытается загрузить на сервер данные в неподходящем формате. В таком случае сервер просто отказывается принимать посылаемые файлы и разрывает соединение. Как и в случае с 413.

416 Range Not Satisfiable

Подобный ответ можно ожидать, если клиент запрашивает у сервера определенные данные, но эти данные на сервере не соответствуют запросу. То есть, грубо говоря, вы просите у сервера какой-то набор данных с заранее заданным размером, а в итоге оказывается, что размер этих данных меньше, чем объем, указанный в запросе. Серверу ничего не остается, кроме как послать вас, ведь он не обучен поведению в таких ситуациях.

417 Expectation Failed

Такая ошибка высвечивается, когда ожидания сервера не совпадают с данными в запросе клиента. Сведения об ожиданиях прописываются в заголовке Expect заранее. Так что можно ознакомиться с ними, чтобы выяснить, как решить названную проблему.

418 I’m a teapot

Код 418 можно увидеть, если сервер откажется варить кофе, потому что он чайник. Это первоапрельская шутка. Естественно, 418 не используется нигде всерьез и просто существует как дань памяти программистам-юмористам, придумавшим это в 1998 году.

Сертификат клиента не может быть отправлен приложением

У Google получился такой симпатичный чайник

421 Misdirected Request

Появляется когда запрос клиента переправляется на сервер, который не может дать на него адекватный ответ. Например, если запрос был отправлен на ресурс, который вообще не настроен обрабатывать запросы извне.

Чтобы исправить проблему, можно попробовать переподключиться к ресурсу заново или попробовать другое соединение.

422 Unprocessable Entity

Код 422 говорит, что сервер вроде бы принял запрос, понял его, все хорошо, но из-за семантических ошибок корректно обработать не смог. Значит, где-то в запросе затаилась логическая ошибка, мешающая корректному взаимодействию клиента и сервера. Надо ее найти и исправить.

423 Locked

424 сообщает о том, что для выполнения запроса со стороны клиента успешно должна завершиться еще одна или несколько параллельных операций. Если какая-то из них «провалится», то «помрет» все соединение сразу, и обработать запрос до конца не получится. Аналогичное происходит, если некорректно был обработан один из предыдущих запросов.

425 Too Early

Появляется в ответ на запрос, который может быть моментально запущен заново. Сервер не рискует и не берется за его обработку, чтобы не подставиться под так называемую «атаку повторного воспроизведения».

426 Upgrade Required

Тут нам прямо сообщают, что сервер не желает с нами общаться, пока мы не перейдем на более современный протокол. Наткнуться на такую ошибку очень тяжело, но в случае появления, скорее всего, будет достаточно установить браузер посвежее.

428 Precondition Required

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

429 Too Many Requests

Здесь все просто. Ошибка появляется, когда клиент отправляет на сервер слишком много запросов в короткий промежуток времени. Очень похоже на поведение взломщиков. По этой причине запрос моментально блокируется.

Сертификат клиента не может быть отправлен приложением

431 Request Header Fields Too Large

Из названия понятно, что ошибка с кодом 431 появляется из-за того, что в запросе клиента используются слишком длинные заголовки (неважно, один или несколько из них). Исправляется это с помощью сокращения заголовков и повторной отправки запроса. В теле ошибки обычно отображается краткая информация о том, как пользователь может решить эту проблему самостоятельно.

444 No Response

Этот код вам вряд ли удастся увидеть. Он отображается в лог-файлах, чтобы подтвердить, что сервер никак не отреагировал на запрос пользователя и прервал соединение.

449 Retry With

Код используется в расширениях компании Microsoft. Он сигнализирует о том, что запрос от клиента не может быть принят сервером. Причиной становятся неверно указанные параметры. Сама 449 ошибка говорит о необходимости скорректировать запрос и повторить его снова, подготовив к работе с сервером.

450 Blocked by Windows Parental Controls

450 код увидят дети, попавшие под действие системы «Родительский контроль» компании Microsoft. По сути, ошибка говорит о том, что с компьютера попытались зайти на заблокированный ресурс. Избежать этой ошибки можно изменением параметров родительского контроля.

451 Unavailable For Legal Reasons

Этот код сообщает клиенту, что он не может попасть на запрашиваемый ресурс из юридических соображений. Скорее всего, доступ был заблокирован из-за каких-нибудь государственных санкций, нового законодательства или цензуры со стороны властей. В общем, все вопросы к государству и провайдеру связи.

Сертификат клиента не может быть отправлен приложением

Сертификат клиента не может быть отправлен приложением

Сертификат клиента не может быть отправлен приложением

Список ошибок на стороне сервера (5xx)

Теперь поговорим об ошибках, которые возникают где-то на сервере. Все они связаны с запросами, которые не удается обработать на том конце. Пользователь зачастую в их появлении не виноват.

Этот код возникает, когда сервер сталкивается с непредвиденными обстоятельствами. Такими, которые и сам не может пояснить. Как, собственно, и завершить запрос со стороны пользователя. По факту, эта ошибка говорит нам что-то вроде «Я не могу подобрать более подходящий код ошибки, поэтому лови 500 и делай с этим, что хочешь». Мы писали о нем чуть подробнее тут.

Сертификат клиента не может быть отправлен приложением

Дело не в тебе, дело во мне (С)

Сертификат клиента не может быть отправлен приложением

501 Not Implemented

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

Иногда в теле ошибки еще пишут что-то в духе «Приходите попозже, возможно, в будущем нужная функция появится».

502 Bad Getaway

Можно встретить в том случае, если запрашиваемый сервер выступает в роли шлюза или прокси. Возникает из-за несогласования протоколов между вышестоящим серверов и его шлюзом. Рассказываем о том, как ее исправить, в этой статье.

503 Service Unavailable

Появляется, когда сервер не может обработать запрос клиента по одной из двух технических причин:

Обычно ошибка 503 носит временный характер, и для ее решения достаточно немного подождать.

504 Gateway Timeout

Ошибка похожа на 408. Здесь же прокси-сервер пытается выйти на контакт с вышестоящим сервером, но не успевает это сделать до истечения тайм-аута. Отсюда и ошибка.

Сертификат клиента не может быть отправлен приложением

505 HTTP Version Not Supported

Обычно с такой ошибкой сталкиваются только в том случае, если сервер изначально настроен неправильно. То есть это не сиюминутная проблема, а что-то серьезное на уровне базовой конфигурации. Тут придется потрудиться разработчикам. Выявить проблему и разрешить ее.

507 Insufficient Storage

Код 507 встречается в тех ситуациях, когда серверу не хватает пространства в хранилище для обработки запроса со стороны клиента. Проблема решается освобождением места или расширением доступного пространства. Тогда сервер сможет без проблем обработать запрос пользователя.

508 Loop Detected

Таким кодом сервер отзовется в случае, если заметит бесконечный цикл в запросе клиента. Можно расценивать его как провал запроса и выполняемой операции в целом.

509 Bandwidth Limit Exceeded

Возникает, если сервер начинает потреблять больше трафика, чем ему позволено.

510 Not Extended

Появляется, если клиент посылает запрос на использование какого-либо расширения, отсутствующего на сервере. Чтобы исправить проблему, надо убрать декларирование неподдерживаемого расширения из запроса или добавить поддержку на сервер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *