J'écris un utilitaire qui me permettrait de surveiller la santé de nos sites Web. Cela consiste en une série de tâches de validation que je peux exécuter sur une application Web. L'un des tests consiste à anticiper l'expiration d'un certificat SSL particulier.Certificat SSL pré-récupération .NET
Je cherche un moyen de pré-récupérer le certificat SSL installé sur un site web en utilisant .NET ou un WINAPI afin de pouvoir valider la date d'expiration du certificat associé à un site web particulier. Une façon de le faire est de mettre en cache les certificats lorsqu'ils sont validés dans le gestionnaire ServicePointManager.ServerCertificateValidationCallback, puis de les faire correspondre avec les sites Web configurés, mais cela semble un peu hackish. Un autre serait de configurer l'application avec le certificat pour le site Web, mais je préfère éviter cela si je peux afin de minimiser la configuration.
Quel serait le moyen le plus simple pour moi de télécharger un certificat SSL associé à un site Web utilisant .NET afin que je puisse inspecter les informations contenues dans le certificat pour le valider?
EDIT:
Pour étendre la réponse ci-dessous, il n'y a pas besoin de créer manuellement le ServicePoint avant de créer la demande. Il est généré sur l'objet de requête dans le cadre de l'exécution de la requête.
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;
}
}
question impressionnante :) –