激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET使用X509Certificate2出現一系列問題的解決方法

ASP.NET使用X509Certificate2出現一系列問題的解決方法

2020-05-04 15:59Shenroe ASP.NET教程

這篇文章主要為大家詳細介紹了ASP.NET使用X509Certificate2出現一系列問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

原先加載證書的代碼:

 

復制代碼 代碼如下:
1 X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);2 Request.ClientCertificates.Add(cert);

 

在vs 上測試通過。但是部署到IIS上一直報這個問題:

 

復制代碼 代碼如下:
System.Security.Cryptography.CryptographicException: 系統找不到指定的文件。

 

詳細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)。

反復測試之后,確認不是代碼跟文件路徑的問題。在查詢微軟的文檔后發現了相關說明,指明了問題所在,以下分享一下我的操作流程。

1.將證書安裝上去

點擊 [開始] -> [運行] -> 鍵入[mmc] 進入“控制臺”界面 -> 選擇[文件] -> [添加/刪除管理單元](Ctrl+M)

ASP.NET使用X509Certificate2出現一系列問題的解決方法

選擇 [證書] -> [計算機賬戶] -> [下一步] -> [完成]

ASP.NET使用X509Certificate2出現一系列問題的解決方法

選擇 [證書] -> [導入]

ASP.NET使用X509Certificate2出現一系列問題的解決方法

導入你的證書文件

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 是指證書所在的存儲區

另外,證書的名稱就是這個,如圖所示ASP.NET使用X509Certificate2出現一系列問題的解決方法而不是其他什么東西,我就是搞錯了,點擊這個證書的詳情取了里面的名稱,導致授權不成功。

而iis賬號標識,是指站點對應的應用程序池,高級設置里有標識這個選項來選擇對應的用戶。當時我授權的標識是Network Service,而應用程序池中的標識ApplicationPoolIdentity,結果導致我發起請求時出現了:

 

復制代碼 代碼如下:
System.Net.WebException: 請求被中止: 未能創建 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];

 

再測試一下,終于成功!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
771
主站蜘蛛池模板: 久综合 | 九草av| 欧美a在线| 久久亚洲线观看视频 | 99久久免费看精品 | 国产精品久久久毛片 | 久久噜噜噜精品国产亚洲综合 | 中国免费黄色 | 久久国产精品久久久久久电车 | 国产乱淫av一区二区三区 | 精品亚洲一区二区 | 精品一区二区在线播放 | 久章草影院 | 日本最新免费二区三区 | 国产免费传媒av片在线 | 91视频网页 | 91精品国产乱码久久桃 | 国产精品久久久久久影视 | 久久综合婷婷 | 黄色片在线免费播放 | 在线a | 亚洲情视频 | 久久久三区 | 久久久久av69精品 | 一级黄色免费观看 | 新久草在线视频 | 午夜性久久| 中国国语毛片免费观看视频 | 96视频在线免费观看 | 精品在线免费播放 | 一区二区三视频 | 青青草成人免费视频在线 | 午夜精品久久久久久毛片 | 国产精品久久久久久久久久久久久久久 | 日本成人一区二区 | 污视频在线免费播放 | 色婷婷综合久久久久中文 | 精品久久久久久久久久中出 | 亚洲一区二区三区日本久久九 | 日韩视频精品一区 | 2021av视频 |