Я пишу утилиту, которая позволила бы мне следить за состоянием наших сайтов. Это состоит из серии задач проверки, которые я могу запустить с веб-приложением. Одним из тестов является ожидание истечения срока действия определенного сертификата SSL.
Я ищу способ предварительной загрузки SSL-сертификата, установленного на веб-сайте, с использованием .NET или WINAPI, чтобы можно было проверить дату истечения срока действия сертификата, связанного с конкретным веб-сайтом.
Один из способов сделать это - кэшировать сертификаты, когда они проверяются в обработчике ServicePointManager.ServerCertificateValidationCallback, а затем сопоставлять их с настроенными веб-сайтами, но это кажется немного хакерским. Другой вариант - настроить приложение с помощью сертификата для веб-сайта, но я бы предпочел этого избежать, если смогу, чтобы минимизировать конфигурацию.
Какой самый простой способ загрузить для меня сертификат SSL, связанный с веб-сайтом, с помощью .NET, чтобы я мог проверить информацию, содержащуюся в сертификате, для его проверки?
EDIT:
Чтобы расширить ответ ниже, нет необходимости вручную создавать ServicePoint до создания запроса. Он генерируется в объекте запроса как часть выполнения запроса.
private static string GetSSLExpiration(string url)
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
using (WebResponse response = request.GetResponse()) { }
if (request.ServicePoint.Certificate != null)
{
return request.ServicePoint.Certificate.GetExpirationDateString();
}
else
{
return string.Empty;
}
}