C#創建https請求並使用pfx證書


常規情況下創建Web請求,並獲取請求數據的代碼如下:

    WebRequest req = WebRequest.Create(url);

    req.Timeout = 15000;

    WebResponse result = req.GetResponse();

    Stream ReceiveStream = result.GetResponseStream();

如果需要在代碼中加入證書,則需要使用HttpWebRequest對象進行請求,代碼如下:

    //添加驗證證書的回調方法

    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

    HttpWebRequest httpRequest = (HttpWebRequest)HttpWebRequest.Create(strQueryURL);

    X509Certificate cerCaiShang = new X509Certificate(System.Web.HttpContext.Current.Server.MapPath(setting.PfxFile), setting.key);

    httpRequest.ClientCertificates.Add(cerCaiShang);

    HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();

    Stream receiveStream = httpResponse.GetResponseStream();

    // 回調方法

    public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)

    {

        if (sslPolicyErrors == SslPolicyErrors.None)

            return true;

        return false;

    }

本來這就算是完成了,但總是失敗,原因未知,與萬惡的Windows有關,還需要將客戶端的證書+私鑰(pfx 或p12 文件),導入到操作系統(windows)的相關證書區域,步驟:

    Windows xp/2003

        1. 單擊 開始 ,單擊 運行 ,鍵入 mmc ,然后單擊 確定 。

        2. 在 文件 菜單上單擊 添加/刪除管理單元 。

        3. 在 添加/刪除管理單元 對話框中,單擊 添加 。

        4. 在 添加獨立管理單元 對話框單擊 證書 ,然后單擊 添加 。

        5. 在在 證書管理單元中 對話框中單擊 計算機帳戶 ,然后單擊 下一步

        6. 在 選擇計算機 對話框中,單擊 完成 。

        7. 在 添加獨立管理單元 對話框單擊 關閉 ,然后單擊 確定 。

        8. 展開 證書 (本地計算機) ,展開 個人 ,然后單擊 證書 。

        9. 右鍵 -》 所有任務-》導入 選擇你的證書導入

    Windows 7

        1. 單擊 開始 ,單擊 運行 ,鍵入 mmc ,然后單擊 確定 。

        2. 在 文件 菜單上單擊 添加/刪除管理單元 。

        3. 在 可用的管理單元 列表中選擇 證書 ,點擊 添加 。

        4. 在 證書管理 對話框中選擇 計算機賬戶 ,然后單擊 下一步

        5. 在 選擇計算機 對話框中,單擊 完成 。

        6. 在 添加或刪除管理單元 對話框單擊 確定 。

        7. 展開 證書 (本地計算機) ,展開 個人 ,然后單擊 證書 。

        8. 右鍵 -》 所有任務-》導入 選擇你的證書導入

再次測試,就可以使用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM