OpenPOP.POP3 с сертификатом IIS SSL - PullRequest
3 голосов
/ 17 ноября 2010

Я использую OpenPOP. Я пытаюсь получить почту с сервера обмена внутри офиса.Это мой код

 popClient.Connect(host.Host, (int)host.Port, (bool)host.Ssl);
 popClient.Authenticate(host.Username, host.Password);

Prodlem - это сертификат SSL, созданный в iis 7, и он не является действительным сертификатом. Может ли мой способ обойти это.

Это дает мне ошибку удаленносертификат недействителен в соответствии с процедурой проверки.

Ответы [ 2 ]

6 голосов
/ 18 ноября 2010

Да, есть способ.Это требует некоторых небольших изменений кода в классе POPClient.

Шаг 1 : замените конструктор для экземпляра SslStream, который используется для аутентификации сервера, на тот, который позволяет вам предоставить делегата дляпроверка сертификата, предоставленного удаленной стороной.Поэтому замените

SslStream stream = new SslStream(clientSocket.GetStream(), false); 

из класса POPClient, метод Connect на

SslStream stream = new SslStream(clientSocket.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);

Шаг 2 : укажите метод, вызываемый делегатом, и принудительно выполните проверкуудаленный сертификат, возвращая всегда true:

public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{         
    return true;  // force the validation of any certificate
}

Для получения более подробной информации по этому вопросу, пожалуйста, проверьте документацию, доступную по msdn .

2 голосов
/ 19 ноября 2010

Я один из разработчиков на OpenPop.Я не думал об использовании этого, но, увидев это, я вставлю его в основной код, когда у меня будет время, и я не буду работать над некоторыми его частями.На данный момент он находится в моем списке TODO.

/ Kasper (foens)

...