Sto scrivendo un'utilità che mi consenta di monitorare lo stato dei nostri siti Web. Questo consiste in una serie di attività di convalida che posso eseguire su un'applicazione web. Uno dei test consiste nell'anticipare la scadenza di un determinato certificato SSL.Prelettura del certificato SSL .NET
Sto cercando un modo per pre-recuperare il certificato SSL installato su un sito Web utilizzando .NET o WINAPI in modo da poter convalidare la data di scadenza del certificato associato a un sito Web specifico.
Un modo per farlo è memorizzare nella cache i certificati quando vengono convalidati nel gestore ServicePointManager.ServerCertificateValidationCallback e quindi confrontarli con siti Web configurati, ma questo sembra un po 'logico. Un altro sarebbe configurare l'applicazione con il certificato per il sito Web, ma preferirei evitare questo se possibile per minimizzare la configurazione.
Quale sarebbe il modo più semplice per me di scaricare un certificato SSL associato a un sito Web utilizzando .NET in modo da poter esaminare le informazioni contenute nel certificato per convalidarlo?
EDIT:
Per estendere sulla risposta qui sotto non v'è alcuna necessità di creare manualmente la ServicePoint prima di creare la richiesta. Viene generato sull'oggetto richiesta come parte dell'esecuzione della richiesta.
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;
}
}
domanda stupenda :) –