2013-03-07 24 views
11

sto cercando di ottenere i dati da qualsiasi certificato di nomi di dominio SSL. Ad esempio, desidero inserire qualsiasi indirizzo del sito web, ad es. "http://stackoverflow.com" e il mio codice controllerebbe innanzitutto se esiste un certificato SSL. Se lo fa, voglio che estragga la data di scadenza del certificato. [sto leggendo Domainnames dal DB] Esempio: http://www.digicert.com/help/ottenere il certificato ssl in .net

Ho bisogno di creare un servizio web per controllare la data di scadenza. come posso implementarlo ?? - Ho cercato un sacco di cose diverse come RequestCertificateValidationCallback e ClientCertificates ecc.

Potrei sbagliare completamente (quindi perché ho bisogno di aiuto) ma dovrei creare un HTTPWebRequest e quindi richiedere in qualche modo il certificato client e gli elementi specifici in quel modo ?

ho provato l'esempio fornito @SSL certificate pre-fetch .NET, ma mi viene proibito l'errore 403.

Qualsiasi aiuto sarebbe molto apprezzato - Grazie.

+0

si prega di utilizzare i dettagli in questo link come si desidera http://stackoverflow.com/questions/1534908/transfer-files-over-ftps-ssl-tls-using-c-net?answertab=active#tab- top http://www.codeproject.com/Articles/31624/An-FTP-secure-client-library-for-C questi collegamenti si occupano di ftp ... ma li ho usati come voglio ottenere dettagli sui certificati. Prova a usarli su httprequest. – cdev

+0

ho provato a utilizzare httprequest ma sto ottenendo 403 errore proibito – user166013

+0

Ho aggiunto una risposta. Si prega di controllare e fammi sapere è utile a voi. – cdev

risposta

18
using System.Security; 
    using System.Security.Cryptography; 
    using System.Security.Cryptography.X509Certificates; 

    //Do webrequest to get info on secure site 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://mail.google.com"); 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    response.Close(); 

    //retrieve the ssl cert and assign it to an X509Certificate object 
    X509Certificate cert = request.ServicePoint.Certificate; 

    //convert the X509Certificate to an X509Certificate2 object by passing it into the constructor 
    X509Certificate2 cert2 = new X509Certificate2(cert); 

    string cn = cert2.GetIssuerName(); 
    string cedate = cert2.GetExpirationDateString(); 
    string cpub = cert2.GetPublicKeyString(); 

    //display the cert dialog box 
    X509Certificate2UI.DisplayCertificate(cert2); 

per eseguire ciò è necessario aggiungere system.security al riferimento.

+0

valori di stampa di cn, cedate, cpub – cdev

+0

grazie .. funziona bene :) – user166013

3

Una cosa da notare è che potrebbe essere necessario impostare request.AllowAutoRedirect = False. In caso contrario, se il server reindirizza HTTPS a HTTP, non sarà possibile ottenere il certificato dall'oggetto HttpWebRequest.

Problemi correlati