ASP.NET使用X509Certificate2出現(xiàn)一系列問(wèn)題的解決方法
在做微信支付退款的時(shí)候,由于需要使用到p12證書,結(jié)果就遇到一系列的坑。這里做個(gè)記錄方便以后查閱。
原先加載證書的代碼:
在vs 上測(cè)試通過(guò)。但是部署到IIS上一直報(bào)這個(gè)問(wèn)題:
詳細(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)擊 [開(kāi)始] -> [運(yùn)行] -> 鍵入[mmc] 進(jìn)入“控制臺(tái)”界面 -> 選擇[文件] -> [添加/刪除管理單元](Ctrl+M)

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

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

導(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 文件夾下。打開(kāi)cmd鍵入命令:
-g 指令 就是授權(quán)
-c 是指證書所在的存儲(chǔ)區(qū)
另外,證書的名稱就是這個(gè),如圖所示
而不是其他什么東西,我就是搞錯(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)了:
3.修改代碼
做完這些配置之后修改一下之前加載證書的代碼。
再測(cè)試一下,終于成功!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET+Web服務(wù)實(shí)現(xiàn)軟件共享
ASP.NET+Web服務(wù)實(shí)現(xiàn)軟件共享...2006-09-09
asp.net使用npoi讀取excel模板并導(dǎo)出下載詳解
這篇文章主要介紹了asp.net使用npoi讀取excel模板并導(dǎo)出下載的示例,大家參考使用吧2014-01-01
ASP.NET Core 配置和使用環(huán)境變量的實(shí)現(xiàn)
這篇文章主要介紹了ASP.NET Core 配置和使用環(huán)境變量的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
在asp.net中使用加密數(shù)據(jù)庫(kù)聯(lián)接字符串保證數(shù)據(jù)安全
加密web.config可以有效保證數(shù)據(jù)庫(kù)用戶和密碼安全,下面是示例代碼,大家可以看看2014-09-09
KindEditor圖片上傳的Asp.net代碼實(shí)例
KindEditor是一個(gè)不錯(cuò)的網(wǎng)頁(yè)在線編輯器,可是它只提供了asp,php,jsp上傳的類,沒(méi)有提供Asp.net上傳的類,廢話不多說(shuō),下面是ASP.NET的代碼2013-11-11
ASP.NET Core 6.0 中使用Autofac的項(xiàng)目實(shí)踐
本文主要介紹了ASP.NET Core 6.0 中使用Autofac的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01

