博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF如何使用X509证书 z
阅读量:5896 次
发布时间:2019-06-19

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

如何创建证书:

      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      (客户端证书)

 

makecert-sr localmachine -ss My -n CN=wcf服务端机器名 -sky exchange -pe –r

各种参数的介绍

属性解析

-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。

   证书创建成功后!—

 

这样就基本简单的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://fsxsx.baihongyu.com/

你可能感兴趣的文章
装饰者模式&数据库连接池原理
查看>>
python自动化运维之路~DAY1
查看>>
运维面临的主要安全威胁介绍
查看>>
Hadoop生态圈-Hive函数
查看>>
OpenStack的基础原理
查看>>
js常用正则表达式判断
查看>>
Bootstrap学习笔记(二)-----网格系统
查看>>
第一次跑eureka
查看>>
Ubuntu 的软件的管理工具
查看>>
markdown基本语法
查看>>
跳马问题
查看>>
让linq 的distinct更方便一点吧
查看>>
str类型
查看>>
人工智能第一次作业
查看>>
【题解】新型城市化 HAOI2017 网络流 二分图最大匹配 强连通分量
查看>>
[总结]视音频编解码技术零基础学习方法
查看>>
怎样安装Windows7操作系统
查看>>
智慧城市,在中国的北海边再画一个圈——大连“中国首届智慧城市协同创新峰会”请你带好笔...
查看>>
Xms Xmx PermSize MaxPermSize 区别
查看>>
mysql常用命令大全
查看>>