Получение срока действия сертификата
Есть несколько веб-приложений, которые помогут вам проверить текущий статус сертификатов используемых нами доменов, и у нас их несколько.
Я создал функцию Azure, которая запускается один раз в день и проверяет несколько доменов, которые мне нужно просмотреть. Это очень простое консольное приложение, которое, если срок действия сертификата меньше 30 дней, отправляет электронное письмо.
Саму логику работы функции показывать не буду, хотелось бы показать функцию, которая выполняет базовую проверку сертификата и какие данные мы получаем.
Функция
static async Task<X509Certificate2> CheckCertificateAsync(string urlPath)
{
var certificate = new X509Certificate2();
var httpClientHandler = new HttpClientHandler
{
ServerCertificateCustomValidationCallback = (request, cert, chain, policyErrors) =>
{
certificate = new X509Certificate2(cert);
return true;
}
};
using HttpClient httpClient = new HttpClient(httpClientHandler);
await httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Head, urlPath));
return certificate;
}
Этот метод CheckCertificateAsync вернет нам сертификат X509Certificate2 который позволит нам сделать множество вещей, включая проверку даты истечения срока действия.
Сериализованный результат
Это сериализованное значение объекта certificate:
[[[ТОК_4]]]
Срок годности
Чтобы узнать срок действия, нам нужно взглянуть на NotAfter и NotBefore, которые находятся внутри этого объекта:
[[[ТОК_7]]]
Консольное приложение
Следующий фрагмент представляет собой простое консольное приложение, созданное на базе .NET 6, которое выдаст следующий результат, в котором вы можете проверить любой сертификат, который вам нужен:
[[[ТОК_8]]]
Демо-проект
Вы можете найти консольное приложение на моем Github, в репозитории под названием expiration-date-certificate.