ASP.NET使用X509Certificate2出現(xiàn)的一些問(wèn)題如何處理

這篇文章主要介紹了ASP.NET使用X509Certificate2出現(xiàn)的一些問(wèn)題如何處理,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、紹興網(wǎng)絡(luò)推廣、成都小程序開發(fā)、紹興網(wǎng)絡(luò)營(yíng)銷、紹興企業(yè)策劃、紹興品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供紹興建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:muchs.cn

在做微信支付退款的時(shí)候,由于需要使用到p12證書,結(jié)果就遇到一系列的坑。這里做個(gè)記錄方便以后查閱。

原先加載證書的代碼:

復(fù)制代碼 代碼如下:

1 X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);2 Request.ClientCertificates.Add(cert);

在vs 上測(cè)試通過(guò)。但是部署到IIS上一直報(bào)這個(gè)問(wèn)題:

復(fù)制代碼 代碼如下:

System.Security.Cryptography.CryptographicException: 系統(tǒng)找不到指定的文件。

詳細(xì)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ù)測(cè)試之后,確認(rèn)不是代碼跟文件路徑的問(wèn)題。在查詢微軟的文檔后發(fā)現(xiàn)了相關(guān)說(shuō)明,指明了問(wèn)題所在,以下分享一下我的操作流程。

1.將證書安裝上去

點(diǎn)擊 [開始] -> [運(yùn)行] -> 鍵入[mmc] 進(jìn)入“控制臺(tái)”界面 -> 選擇[文件] -> [添加/刪除管理單元](Ctrl+M)

ASP.NET使用X509Certificate2出現(xiàn)的一些問(wèn)題如何處理

選擇 [證書] -> [計(jì)算機(jī)賬戶] -> [下一步] -> [完成]

ASP.NET使用X509Certificate2出現(xiàn)的一些問(wèn)題如何處理

選擇 [證書] -> [導(dǎo)入]

ASP.NET使用X509Certificate2出現(xiàn)的一些問(wèn)題如何處理

導(dǎo)入你的證書文件

2.授權(quán)證書

先安裝 winhttpcertcfg.exe 工具(Windows HTTP Services Certificate Configuration Tool)。安裝完成之后在該工具在C:\Program Files (x86)\Windows Resource Kits\Tools 或者C:\Program Files\Windows Resource Kits\Tools 文件夾下。打開cmd鍵入命令:

復(fù)制代碼 代碼如下:

winhttpcertcfg -g -c LOCAL_MACHINE\MY -s "你的證書名稱" -a "你的iis賬號(hào)標(biāo)識(shí)"

-g 指令 就是授權(quán)

-c 是指證書所在的存儲(chǔ)區(qū)

另外,證書的名稱就是這個(gè),如圖所示 ASP.NET使用X509Certificate2出現(xiàn)的一些問(wèn)題如何處理而不是其他什么東西,我就是搞錯(cuò)了,點(diǎn)擊這個(gè)證書的詳情取了里面的名稱,導(dǎo)致授權(quán)不成功。

而iis賬號(hào)標(biāo)識(shí),是指站點(diǎn)對(duì)應(yīng)的應(yīng)用程序池,高級(jí)設(shè)置里有標(biāo)識(shí)這個(gè)選項(xiàng)來(lái)選擇對(duì)應(yīng)的用戶。當(dāng)時(shí)我授權(quán)的標(biāo)識(shí)是Network Service,而應(yīng)用程序池中的標(biāo)識(shí)ApplicationPoolIdentity,結(jié)果導(dǎo)致我發(fā)起請(qǐng)求時(shí)出現(xiàn)了:

復(fù)制代碼 代碼如下:

System.Net.WebException: 請(qǐng)求被中止: 未能創(chuàng)建 SSL/TLS 安全通道。

3.修改代碼

做完這些配置之后修改一下之前加載證書的代碼。

復(fù)制代碼 代碼如下:

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

再測(cè)試一下,終于成功!

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享ASP.NET使用X509Certificate2出現(xiàn)的一些問(wèn)題如何處理內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!

網(wǎng)站欄目:ASP.NET使用X509Certificate2出現(xiàn)的一些問(wèn)題如何處理
文章分享:http://muchs.cn/article0/ppjgoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、做網(wǎng)站、網(wǎng)站改版外貿(mào)網(wǎng)站建設(shè)、外貿(mào)建站域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)