TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.78K subscribers
Post #1222 1.41K
День девятьсот девяносто седьмой. #ПолезныйКод
Загрузка сертификата SSL/TLS в .NET
Недавно мне потребовалось настроить оповещение, когда срок действия сертификата подходит к концу или когда он использует небезопасный алгоритм подписи. Первый шаг - получить сертификат. В .NET для этого вы можете использовать класс SslStream.

static class CertificateDownloader
{
//Этот метод обратного вызова нужен для проверки безопасности сертификата
//Но здесь нам не нужна проверка, мы только получаем данные сертификата
private static readonly
RemoteCertificateValidationCallback
сallback = (_, _, _, _) => true;

public static async Task<X509Certificate2?>
GetCertificateAsync(string domain, int port = 443)
{
using var client = new TcpClient(domain, port);
using var sslStream =
new SslStream(client.GetStream(), true, сallback);

// Инициируем соединение, чтобы скачать сертификат
await sslStream
.AuthenticateAsClientAsync(domain)
.ConfigureAwait(false);

var cert = sslStream.RemoteCertificate;
if (cert != null)
return new X509Certificate2(cert);
return null;
}
}

Использование:
static async Task Main()
{
var cert = await
CertificateDownloader.GetCertificateAsync("www.google.com");

Console.WriteLine($"Subject: {cert?.Subject}");
Console.WriteLine($"Issuer: {cert?.Issuer}");
Console.WriteLine($"NotBefore: {cert?.NotBefore}");
Console.WriteLine($"NotAfter: {cert?.NotAfter}");
Console.WriteLine($"Algorithm: {cert?.SignatureAlgorithm.FriendlyName}");
}

Далее можно настроить повторяющуюся задачу в Azure Pipelines или GitHub Actions для ежедневной проверки сертификатов, но это выходит за рамки этого поста.

Источник: https://www.meziantou.net/downloading-a-ssl-certificate-in-dotnet.htm
More from @netdeveloperdiary
  1. Oct 16, 2026День 2816. #Карьера #AI Станет ли ИИ-Кодинг Концом Программирования для Людей? Автор ориги…
  2. Oct 15, 2026Post #3374
  3. Oct 14, 2026Post #3373
  4. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  5. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  6. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →