在做微信支付退款的时候,由于需要使用到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)

选择 [证书] -> [计算机账户] -> [下一步] -> [完成]

选择 [证书] -> [导入]

导入你的证书文件

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 是指证书所在的存储区

另外,证书的名称就是这个,如图所示

而不是其他什么东西,我就是搞错了,点击这个证书的详情取了里面的名称,导致授权不成功。

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

再测试一下,终于成功!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java x509certificate2_ASP.NET使用X509Certificate2出现一系列问题的解决方法相关推荐

  1. “sql2005管道的另一端上无任何进程”及附带一系列问题完整解决方法

    "sql2005管道的另一端上无任何进程"及附带一系列问题完整解决方法 问题一:已成功与服务器建立连接,但是在登录过程中发生错误.   (provider:   共享内存提供程序, ...

  2. [ JAVA编程 ] double类型计算精度丢失问题及解决方法

    [ JAVA编程 ] double类型计算精度丢失问题及解决方法 参考文章: (1)[ JAVA编程 ] double类型计算精度丢失问题及解决方法 (2)https://www.cnblogs.co ...

  3. tomcat运行时候出现java.net.BindException: Address already in use: JVM_Bind错误解决方法

    tomcat运行时候出现java.net.BindException: Address already in use: JVM_Bind错误解决方法 参考文章: (1)tomcat运行时候出现java ...

  4. java.lang.IllegalArgumentException: Request header is too large的解决方法

    java.lang.IllegalArgumentException: Request header is too large的解决方法 参考文章: (1)java.lang.IllegalArgum ...

  5. java应用 cpu占用过高问题分析及解决方法

    主要介绍了java应用cpu占用过高问题分析及解决方法,具有一定参考价值,需要的朋友可以参考下. 使用jstack分析java程序cpu占用率过高的问题 1,使用jps查找出java进程的pid,如3 ...

  6. Eclipse Java Oxygen不能创建动态的web项目(解决方法)

    Eclipse Java Oxygen不能创建动态的web项目(解决方法) 一.eclipse安装J2EE插件 一.eclipse安装J2EE插件 Oxygen版本Eclipse没有toamct开发工 ...

  7. IDEA java类文件左下角出现红色的J标识,解决方法

    IDEA java类文件左下角出现红色的J标识,解决方法 解决方法: 引自:https://blog.csdn.net/lisulong1/article/details/81060385

  8. 元空间不足java.lang.OutOfMemoryError: PermGen space 错误的原因及解决方法

    出现 java.lang.OutOfMemoryError: PermGen space 错误的原因及解决方法 原因:堆内存的永久保存区内存分配不足(缺省默认为64M),导致内存溢出错误. 解决的方案 ...

  9. java代码走查常见错误_FindBugs常见错误描述和解决方法

    (一)[DLS_DEAD_LOCAL_STORE] 描述: Dead store to 未使用的局部变量 解决方法:局部变量定义后未使用:实例化对象后又重新对该对象赋值 (二) [ST_WRITE_T ...

最新文章

  1. UVA 11134 FabledRooks 传说中的车 (问题分解)
  2. oracle 修改聚簇因子,Oracle 基础篇 --- 聚簇因子(clustering_factor)
  3. 直播预告|中台基石腾讯云TStack的正确使用姿势
  4. 内地计算机科技学校,23所内地顶尖高校盘点!计算机学科哪家强?
  5. 增加 addDataScheme(file) 才能收到SD卡插拔事件的原因分析 -- 浅析android事件过滤策略...
  6. 安装hadoop集群---resourcemanager和NameNode不在同一台机器上
  7. axure 内部框架内容下滑_Axure教程:转盘抽奖交互原型
  8. zsh关于.zprofile .zlogin .zshrc .zshenv文件中环境变量的加载
  9. LLVM编译器基础 架构
  10. uniapp---使用浏览器_Android真机_Iphone真机实时展示uniapp_一次开发_小程序_Android_IOS_快应用通用工作笔记003
  11. matlab根据数值大小聚类,[matlab聚类分析]请教高手:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?...
  12. uniapp调起打印机(调起第三方打印软件)适用app,将页面生成图片打印的两种方式
  13. 手机虚拟摄像头_用手机当摄像头开直播 无他相机推荐
  14. 四级英语口语模拟测试软件,英语四级口语模拟题:非常有用
  15. 强智教务管理系统爬虫难关1
  16. 主磁盘分区和逻辑磁盘分区的区别是什么?
  17. 未来影像!华为P30国行版售价曝光:徕卡四摄+超级变焦,3988元起
  18. 养成类游戏——动物餐厅开发制作
  19. ios视频循环播放实现
  20. python一张纸折叠到珠峰高度_python实现seo疯狂外链发送工具

热门文章

  1. 英语学习笔记2019-11-15
  2. jQuery学习笔记02:核心部分
  3. px~em~pt转换表
  4. 12.混淆——采样低频信号,采样高频信号_3
  5. jsp测试连接mysql_JSP 连接MySQL配置与测试
  6. 罗彻斯特大学计算机科学系专业排名,罗切斯特大学计算机专业怎么样?
  7. 2017.3.25 圆桌聚餐 思考记录
  8. 球谐函数的概念与应用:可视化理解傅里叶级数
  9. python付费课程推荐知乎_新手小白学习Python,有什么课程推荐吗?
  10. 如何修改select默认option数量多余显示滚动条查看_Chameleon for Mac(mac界面颜色修改工具)...