IsPresent == false может быть вызвано несколькими причинами, связанными с сервером и клиентом.Мы разбираемся с каждым из них на пути к окончательному исправлению этих ошибок, и я подробно опишу каждое из них ...
Проблема сервера № 1 - Переданный сертификат клиента имеет 1 или более путей сертификации, которые НЕ существуют на сервере,Откройте сертификат, перейдите на путь сертификации (вкладка) и убедитесь, что все корневые органы находятся в доверенных корневых центрах сертификации SERVERS.Обратите внимание, что вам НЕ нужно устанавливать сертификат на сервере, а просто открывать ключи корневых органов в разделе Сертификаты (локальный компьютер) \ Доверенные корневые центры сертификации.
Проблемы с сервером # 2 (ранее упомянутое решение) - В IIS для сайта убедитесь, что в параметрах SSL установлено значение Принять ИЛИ Требовать (никогда не игнорировать).Преимущество использования Require заключается в том, что в журналах IIS отображается ошибка 403 7, при которой Accept просто получит IsPresent == false, но с кодом HTTP 200.
Client Issue # 1 - То же, что серверпроблема № 1, нужно доверять этим органам!
Клиент Проблема № 2 - у вас есть доверенные корневые полномочия, но НЕ закрытый ключ для самого сертификата.Убедитесь, что вы установили pfx (закрытый ключ) в хранилище сертификатов, а не в открытый ключ (.cer).Вы также можете проверить, есть ли у вас закрытый ключ, дважды щелкнув по сертификату в хранилище сертификатов, и на вкладке «Общие» вы увидите сообщение, содержащее столько же слов.
Client Issue # 3 - Сертификат помещен вне то место.Вероятно, лучше всего разместить свой сертификат в Сертификаты (Локальный компьютер) \ Личные \ Сертификаты, а не (текущий пользователь).Это сделает сертификат доступным для обработки учетных записей, на которых выполняется ваш код, и которые на самом деле нуждаются в доступе к нему.
Клиентская проблема № 4 - щелкните сертификат правой кнопкой мыши (в хранилище не файл .cer) ->Все задачи -> Управление личными ключами ... и убедитесь, что учетная запись процесса, выполняющая ваш код, имеет разрешение «Чтение».Быстрая проверка этого (но не рекомендуется для производственного использования) заключается в добавлении «Все» как прочитано, чтобы увидеть, если это ваша проблема.