新聞中心
這篇文章主要介紹了ASP.NET使用X509Certificate2出現(xiàn)的一些問題如何處理,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都網(wǎng)站設計、成都網(wǎng)站制作、外貿網(wǎng)站建設、紹興網(wǎng)絡推廣、成都小程序開發(fā)、紹興網(wǎng)絡營銷、紹興企業(yè)策劃、紹興品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供紹興建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
在做微信支付退款的時候,由于需要使用到p12證書,結果就遇到一系列的坑。這里做個記錄方便以后查閱。
原先加載證書的代碼:
復制代碼 代碼如下:
1 X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);2 Request.ClientCertificates.Add(cert);
在vs 上測試通過。但是部署到IIS上一直報這個問題:
復制代碼 代碼如下:
System.Security.Cryptography.CryptographicException: 系統(tǒng)找不到指定的文件。
詳細Stack Trace信息:
在 System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
在 System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromFile(String fileName, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
在 System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(String fileName, Object password, X509KeyStorageFlags keyStorageFlags)
在 System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password)
在 TenpayCore.HttpService.Post(TenpayException& tpEx, Byte[] xml, String url, Boolean isUseCert, Int32 timeout)。
反復測試之后,確認不是代碼跟文件路徑的問題。在查詢微軟的文檔后發(fā)現(xiàn)了相關說明,指明了問題所在,以下分享一下我的操作流程。
1.將證書安裝上去
點擊 [開始] -> [運行] -> 鍵入[mmc] 進入“控制臺”界面 -> 選擇[文件] -> [添加/刪除管理單元](Ctrl+M)
選擇 [證書] -> [計算機賬戶] -> [下一步] -> [完成]
選擇 [證書] -> [導入]
導入你的證書文件
2.授權證書
先安裝 winhttpcertcfg.exe 工具(Windows HTTP Services Certificate Configuration Tool)。安裝完成之后在該工具在C:\Program Files (x86)\Windows Resource Kits\Tools 或者C:\Program Files\Windows Resource Kits\Tools 文件夾下。打開cmd鍵入命令:
復制代碼 代碼如下:
winhttpcertcfg -g -c LOCAL_MACHINE\MY -s "你的證書名稱" -a "你的iis賬號標識"
-g 指令 就是授權
-c 是指證書所在的存儲區(qū)
另外,證書的名稱就是這個,如圖所示 而不是其他什么東西,我就是搞錯了,點擊這個證書的詳情取了里面的名稱,導致授權不成功。
而iis賬號標識,是指站點對應的應用程序池,高級設置里有標識這個選項來選擇對應的用戶。當時我授權的標識是Network Service,而應用程序池中的標識ApplicationPoolIdentity,結果導致我發(fā)起請求時出現(xiàn)了:
復制代碼 代碼如下:
System.Net.WebException: 請求被中止: 未能創(chuàng)建 SSL/TLS 安全通道。
3.修改代碼
做完這些配置之后修改一下之前加載證書的代碼。
復制代碼 代碼如下:
1 X509Store store = new X509Store("My", StoreLocation.LocalMachine); 2 store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); 3 4 System.Security.Cryptography.X509Certificates.X509Certificate2 cert = 5 store.Certificates.Find(X509FindType.FindBySubjectName, "你的證書名稱", false)[0];
再測試一下,終于成功!
感謝你能夠認真閱讀完這篇文章,希望小編分享ASP.NET使用X509Certificate2出現(xiàn)的一些問題如何處理內容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細的解決方法等著你來學習!
標題名稱:ASP.NET使用X509Certificate2出現(xiàn)的一些問題如何處理
網(wǎng)站鏈接:http://fisionsoft.com.cn/article/ppjgoo.html