Как проверить сертификат SSL на основе корневых сертификатов, присутствующих в хранилище сертификатов локального компьютC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как проверить сертификат SSL на основе корневых сертификатов, присутствующих в хранилище сертификатов локального компьют

Сообщение Anonymous »

Я запускаю свою программу со стандартными правами пользователя и предполагаю, что обратный вызов API ValidateServerCertificate использует корневые сертификаты из хранилища сертификатов локального пользователя для проверки предоставленного сертификата.
Пример кода на языке C#.

Код: Выделить всё

// The following method is invoked by the RemoteCertificateValidationDelegate.
public static bool ValidateServerCertificate(
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;

Console.WriteLine("Certificate error: {0}", sslPolicyErrors);

// Do not allow this client to communicate with unauthenticated servers.
return false;
}
Я попытался проверить логику сертификата — получить корень из цепочки и проверить его существование в хранилище сертификатов локального компьютера (доверенный корневой центр сертификации).

Код: Выделить всё

X509Store store = new X509Store("Root", StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly);

X509ChainElement rootElement = chain.ChainElements[chain.ChainElements.Count - 1]; //To get the root of the chain
X509Certificate2 rootCert = rootElement.Certificate;

foreach (X509Certificate2 cert in store.Certificates)
{
// Compare the thumbprint of each certificate
if (cert.Thumbprint.Equals(rootCert.GetCertHashString(), StringComparison.OrdinalIgnoreCase))
{
// Certificate found
return true;
}
}
return false;
Можно ли проверить сертификат с помощью корневых сертификатов из хранилища сертификатов локального компьютера?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ent-in-the
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»