2013-03-07 9 views
11

私は任意のドメイン名SSL証明書からデータを取得したいと考えています。たとえば、私は任意のウェブサイトアドレスを入力したいと思います。 "http://stackoverflow.com"と私のコードは、最初にSSL証明書が存在するかどうかをチェックします。もしそうであれば、証明書の有効期限を延期したいと思う。 [私はDBからドメイン名を読んでいます] 例:http://www.digicert.com/help/.netでSSL証明書を取得する

私は、有効期限を確認するWebサービスを作成する必要があります。私はそれをどのように実装できますか? - 私はRequestCertificateValidationCallbackやClientCertificatesなどのさまざまなものを探しました。

私は完全に間違っている可能性があります(なぜ私は助けが必要なのでしょうか?)しかし、私はHTTPWebRequestを作成して何とかクライアント証明書と特定の要素を要求します?

私は@SSL certificate pre-fetch .NETの例を試しましたが、私はforbitten 403エラーを取得しています。

ご協力いただきありがとうございます。ありがとうございます。

+0

このリンクの詳細は、ご利用ください。 http://stackoverflow.com/questions/1534908/transfer-files-over-ftps-ssl-tls-using-c-net?answertab=active#tab-トップ http://www.codeproject.com/Articles/31624/An-FTP-secure-client-library-for-C これらのリンクはftpを扱っています...しかし、私はそれらを私が望むように使用しています証明書の詳細を取得します。 httprequestにそれらを使用してみてください。 – cdev

+0

私はhttprequestを使ってみましたが、403の禁じたエラーが出ています – user166013

+0

私は答えを追加しました。それを確認して、あなたに役立つことを教えてください。 – cdev

答えて

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); 

これを実行するには、system.securityを参照に追加する必要があります。

+0

印刷値はcn、cedate、cpub – cdev

+0

ありがとう..そのうまくいって:) – user166013

3

注意すべき点は、request.AllowAutoRedirect = Falseを設定する必要があることです。それ以外の場合、サーバがHTTPSをHTTPにリダイレクトすると、HttpWebRequestオブジェクトから証明書を取得できなくなります。