Je cherche à obtenir les données d'un certificat SSL de noms de domaine donné. Par exemple, je veux mettre dans une adresse de site Web par exemple. " http://stackoverflow.com " et mon code vérifierait d'une fois si un certificat SSL existe. Si cela le fait, je veux que cela sort de la date d'expiration du certificat. [Je lisons les noms de domaine de DB] Exemple: http://www.digicert.com/help/
J'ai besoin de créer un service Web pour vérifier la date d'expiration. Comment puis-je la mettre en œuvre ?? - J'ai levé des charges de différentes choses telles que demandeCertificateValidationCallbackBack et clientCertificats, etc. Puisque je suis nouveau à cela, je ne suis pas sûr de ce qui doit être fait. P>
Je pourrais être complètement faux (d'où j'ai besoin Aide) Mais pourrais-je créer un httpwebrequest, puis demander à l'aide du certificat client et des éléments spécifiques de cette façon? p>
J'ai essayé l'exemple fourni @SSL Certificat Pré-Fetch .NET, mais je reçois une erreur de 403 animée. P>
Toute aide serait très appréciée - merci. p>
C'est le code que j'ai écrit qui lance 403 erreur interdite. p>
Uri u = new Uri("http://services.efi.com/"); ServicePoint sp = ServicePointManager.FindServicePoint(u); string groupName = Guid.NewGuid().ToString(); HttpWebRequest req = HttpWebRequest.Create(u) as HttpWebRequest; req.Accept = "*/*"; req.ConnectionGroupName = groupName; using (WebResponse resp = req.GetResponse()) { // Ignore response, and close the response. } sp.CloseConnectionGroup(groupName); // Implement favourite null check pattern here on sp.Certificate string expiryDate = sp.Certificate.GetExpirationDateString(); string str = expiryDate;
3 Réponses :
Cela fonctionne bien:
namespace ConsoleApplication1 { using System; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; class Program { static void Main() { ServicePointManager.ServerCertificateValidationCallback += ServerCertificateValidationCallback; var request = WebRequest.Create("https://www.google.com"); var response = request.GetResponse(); Console.WriteLine("Done."); Console.ReadLine(); } private static bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { Console.WriteLine("Certificate expires on " + certificate.GetExpirationDateString()); return true; } } }
Quand j'ai essayé d'utiliser mon nom de domaine I.e. webapps.efi.internal Il lance 403 erreur interdite. En réalité, WebApps est le nom du serveur dans mon cas sous lequel il existe un nombre de sites Web hébergés.
Vous obtenez un statut "403 interdit" car c'est ce que le serveur revient lorsque vous accédez à cette page. Je vois la même chose quand je navigue sur cette URI en utilisant IE. Cet état indique que vous n'avez pas la permission d'accéder à l'URL, vous devez peut-être essayer votre code sur une page que vous avez accès. P>
Aussi, vous êtes peu susceptible de voir un certificat sur une connexion http code> - Vous pouvez essayer
https code> à la place. p>
J'ai essayé d'utiliser services.fi.com , mais il lance toujours 403 erreur. Quand j'ai utilisé ' ipp.efi.com ' Ça a fonctionné parfaitement.
Oui, parce que la dernière URL est accessible au public (et aussi des redirections automatiques à https code>), et le premier n'est pas. Si vous ne pouvez pas le naviguer dans IE, vous ne pouvez pas le charger du code non plus. Vous ne pouvez tout simplement pas accéder à
services.fi.com code> (sauf si vous avez des informations d'identification ou un moyen d'accès que nous ne le faisons pas!). Peut-être avez-vous besoin d'une page spécifique URI plutôt que d'un nom de domaine pour ce domaine ...
oh ok, merci pour votre réponse :) .. Sous mon domaine (dites services.fi.com) Il existe un certain nombre de sites Web hébergés.MY requéritemnet est de déterminer la date d'expiration SSL et de prendre les mesures nécessaires (par exemple envoyer un courrier électronique, si l'expiration la date est dans environ20 jours supplémentaires). Alors, comment puis-je le faire pour obtenir les informations de certificat SSL de mon domaine?
Il est probablement plus facile de gérer cela de l'intérieur du site, plutôt que d'accéder au site à l'extérieur. Mais, si vous devez gérer de manière externe, vous aurez besoin d'une URI spécifique sur le domaine accessible de l'extérieur du domaine (disons, " services.fi.com/homepage.aspx "ou une autre page qui rendra réellement dans IE).
Merci beaucoup :) Cela a aidé. Lorsque j'ai essayé de donner une URL accessible depuis le domaine extérieur comme vous l'avez mentionné, cela fonctionne parfaitement ..
Si vous devez télécharger le certificat: .cs exemple fichier exemple: https://gist.github.com/thedom85/6db200104c075310527AAEF63B172253 p> Je recommande également ce site: https://www.simple-talk.com/dotnet/.net-framework/tlsssl-and-.net- Framework-4.0 / P> p>