Подтвердить что ты не робот

Отключение проверки отзыва сертификатов для приложения в Windows

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

В ANTS я увидел, что "Ожидание синхронизации" занимает до 16 секунд, что соответствует задержке, которую я мог видеть в приложении, когда NHibernate попытался загрузить сборку System.Data.SqlServerCE.dll.
Если бы я снова попробовал действие, это будет работать без задержки, но если я оставлю его на 5 минут, то в следующий раз, когда я попробую, он будет медленно загружаться.

Из моих исследований до сих пор, по-видимому, это потому, что dll SqlServerCE подписана, и поэтому система пытается подключиться, чтобы получить списки отзыва сертификатов и время ожидания.
Отключение настройки "Автоматическое обнаружение настроек" в настройках локальной сети "Свойства обозревателя" устраняет проблему, а также отключает "Проверка отзыва сертификатов издателей".
Но администраторы, в которых это приложение будет развернуто, не будут довольны идеей отключения проверки сертификатов для каждой машины или для каждого пользователя, поэтому мне действительно нужно заставить отключить проверку CRL на уровне приложения.

Существует хорошо документированная ошибка в .net 2.0, которая описывает это поведение, и предлагает возможное исправление с элементом файла конфигурации.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <runtime>
        <generatePublisherEvidence enabled="false"/>
    </runtime>
</configuration>

Это НЕ работает для меня, хотя я использую .net 3.5.
SQL-сервер SQLServerCE динамически загружается NHibernate, и мне интересно, может ли тот факт, что он динамический, почему-то, что параметр не работает, но я не знаю, как это проверить.

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

4b9b3361

Ответ 1

Вы можете указать в коде, если вы хотите проверить список аннулирования для каждого приложения:

ServicePointManager.CheckCertificateRevocationList = false;

Ответ 2

В этом блоге posting (который ссылается на другой источник) у вас есть два варианта: отключить проверку CRL по всей системе или за приложение:

Отключить проверку CRL на панели управления → Свойства обозревателя → Дополнительно → В разделе "Безопасность" снимите флажок "Проверить для издателя" опция отзыва сертификата

Отключить проверку CRL для конкретного приложения .Net Статья Microsoft KB: http://support.microsoft.com/kb/936707