博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF如何使用X509证书(安装和错误)(二)
阅读量:6524 次
发布时间:2019-06-24

本文共 2886 字,大约阅读时间需要 9 分钟。

从当前用户导出到本地计算机的的证书格式为.pfx 并且要导出私钥。

 

 

如何创建证书:

      makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=JiangServer -sky exchange -pe     (服务端证书)

      makecert.exe -sr LocalMachine -ss My -a sha1 -n CN=JiangClient -sky exchange -pe      (客户端证书)

各种参数的介绍

属性解析

-sr

指定的证书存储区中的注册表位置。 

currentUser 
指定注册版存储位置为 HKEY_CURRENT_USER. 
localMachine 
指定注册版存储位置为 HKEY_LOCAL_MACHINE.

-ss

指定证书存储的位置。

-a

指定相关的算法,可以选择 MD5 算法或者 SHA1算法

-n

指定证书的名称。该名称遵循X.500命名标准。简单例子如 "CN=MyName" 格式,如果没有指定/n开关,证书默认的名称是"Joe's Software Emporium"。

-sky

证书键类型。可以设置为 exchange 或者 signature。

-pe

证书可导出

详细说明:见msdn。

   证书创建成功后!—

 

 

 

服务端config配置非常重要,如下:

 

这样就基本简单的x509验证方式已经配置好了,发布到IIS中。运行如下:

-----------------------------------------------------------------------------------------------------------运行后报错---------------------------

“/”应用程序中的服务器错误。--------------------------------------------------------------------------------密钥集不存在。说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Security.Cryptography.CryptographicException: 密钥集不存在。源错误: 执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: [CryptographicException: 密钥集不存在。]   System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) +450   System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle) +158   System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair() +231   System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey() +537   System.ServiceModel.Security.SecurityUtils.EnsureCertificateCanDoKeyExchange(X509Certificate2 certificate) +78[ArgumentException: 可能证书“CN=GAServer1”没有能够进行密钥交换的私钥,或者进程可能没有访问私钥的权限。有关详细信息,请参见内部异常。]

 

 

分析错误提示,应该是没有权限呀,我们打开”MMC” 打到我的们 My --证书中的 JiangServer 设置权限。

添加Everyone --读取

 

再次运行wcf,成功了!

现在服务端已经 Deployment!再创建客户端,引用wcf服务。引用wcf服务成功后,我要再次要Deployment   “App.config”文件,添加验证信息。

 

 

 

启动客户端,调用成功!

注意:如果调用wcf失败,几个错误信息

1>   : 无法使用以下搜索标准找到 X.509 证书: StoreName“My”、StoreLocation“LocalMachine”、FindType“FindBySubjectName”、FindValue“JiangClient1”。

解决办法:导入证书(JiangClient1)或创建此证书,注意报的错误信息中的证书所储存位置

 

2 > : 未提供客户端证书。请在 ClientCredential 中指定一个客户端证书。

 

解决办法: 因为服务端使用了证书验证,所以要在客户端配置证书。

再次调用成功!以上就是我在设置X509证书时出现在问题。

 

再次用HttpAnalyzerStdV5查看是否已经加密。如下,已经加密了

 

转载地址:http://kknbo.baihongyu.com/

你可能感兴趣的文章
成都市2014级三诊第16题(理科)
查看>>
python 获取进程pid号
查看>>
链表中插入一个节点的三种情况
查看>>
洛谷.4180.[模板]次小生成树Tree(Kruskal LCA 倍增)
查看>>
TCL函数“参数自动补全” 与 “help 信息显示”
查看>>
POJ1050To the Max
查看>>
汇编基础--标识符、标号、伪指令和指令
查看>>
PowerShell与系统开局(下)
查看>>
运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(四)
查看>>
Go 四篇
查看>>
游戏数值策划-经验值计算公式设计(自百度文库)
查看>>
Spring JDBC模板惯用方式
查看>>
将公用文件夹从Exchange2010迁移到 Exchange 2013
查看>>
动态规划算法
查看>>
WebService学习总结(二)——WebService相关概念介绍
查看>>
泥鳅般的const(一个小Demo彻底搞清楚)
查看>>
Pyqt 打开外部链接的几种方法
查看>>
JavaScript DOM编程艺术学习笔记(一)
查看>>
event.srcElement获得引发事件的控件(表单)
查看>>
ASP.NET MVC铵钮Click后下载文件
查看>>