Estoy escribiendo una utilidad que me permitiría controlar el estado de nuestros sitios web. Esto consiste en una serie de tareas de validación que puedo ejecutar contra una aplicación web. Una de las pruebas es anticipar el vencimiento de un certificado SSL particular.Pre-fetch de certificado SSL .NET
Estoy buscando una forma de buscar previamente el certificado SSL instalado en un sitio web usando .NET o WINAPI para que pueda validar la fecha de vencimiento del certificado asociado a un sitio web en particular.
Una forma de hacerlo es almacenar en caché los certificados cuando se validan en el controlador ServicePointManager.ServerCertificateValidationCallback y luego hacerlos coincidir con los sitios web configurados, pero esto parece un poco hackish. Otra sería configurar la aplicación con el certificado para el sitio web, pero prefiero evitar esto si puedo para minimizar la configuración.
¿Cuál sería la forma más fácil para mí de descargar un certificado SSL asociado a un sitio web usando .NET para poder inspeccionar la información que contiene el certificado para validarlo?
EDIT:
Extender sobre la respuesta de abajo no hay necesidad de crear manualmente el ServicePoint antes de crear la solicitud. Se genera en el objeto de solicitud como parte de la ejecución de la solicitud.
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;
}
}
pregunta asombrosa :) –