2014-02-14 7 views
0

Я создаю приложение, которое использует EWS (Exchange Web Service) для перемещения писем. Я могу запустить свое приложение, минуя проверку сертификата. Я использую этот код, чтобы обойти проверку сертификата:Проверка сертификата для клиента

ServicePointManager.ServerCertificateValidationCallback = 
    delegate(object s, X509Certificate certificate, 
      X509Chain chain, SslPolicyErrors sslPolicyErrors) 
    { 
     return true; 
    }; 

Для проверки сертификата я следовал this post, который был очень полезным в поиске сертификата и проверки сертификата.

При использовании этой должности ValidateCert метод метания Exception

chain.ChainPolicy.RevocationMode = X509RevocationMode.Online | X509RevocationMode.Offline; 

Исключения:

System.ArgumentException: Illegal enum value: value. 
at 
System.Security.Cryptography.X509Certificates.X509ChainPolicy. 
      set_RevocationMode(X509RevocationMode value) 

Я использую Visual Studio 2013. Я открыт для любого другого подхода, чтобы сделать та же задача.

+1

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

+0

Можете ли вы мне как-нибудь сделать это. –

+0

'X509RevocationMode.Online | X509RevocationMode.Offline' - выберите тот или другой. Если вы выберете «X509RevocationMode.Online», вы можете выполнить DoS-приложение во время загрузки большого CRL (или попытаться загрузить отсутствующий CRL). – jww

ответ

0

Вы должны выбрать либо Online или Offline: - Online: всегда пытается связаться с CDP или OCSP URL, указанный в сертификате, чтобы получить список CRL для проверки отзыва - Offline: пытается использовать существующий кэшированные копии CRL

Первый вариант может быть медленным, если сервер CDP или OCSP не отвечает, если есть проблемы с подключением и т. д. Это может даже потерпеть неудачу, если эта проблема является постоянной.

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

Вы также можете очистить кэш CRL перед запуском процесса с помощью автономной опции. Google it: есть разные варианты. Вам нужно будет использовать certutil.exe.

Смежные вопросы