重温WCF之WCF传输安全(十三)(1)前期准备之证书制作(转)
转载地址:http://www.cnblogs.com/lxblog/archive/2012/09/12/2682372.html
一、WCF中的安全方式
说到安全就会涉及到认证,消息一致性和机密性,WCF的安全方式分为两种,即传输安全和消息安全。
传输安全和消息安全的区别:
传输安全提供点对点的安全: 比如 A 提供服务,B和C直接连接到A,这时候A与B 及 A与C直接的传输是安全的,如果B通过C连接到A,那么A与B直接是安全的,B与C之间是不安全的。
消息安全:是把安全机制都应用在消息级别上面的,能够提供端对端的安全,不管消息的路由路径多么复杂,也能保证消息的安全传输。
传输安全我们一般应用在局域网中,消息安全主要应用在复杂的互联网环境中,传输安全有着消息安全不可比拟的优势就是高性能。
二、如何制作证书
既然是传输安全就必然会用到SSL,Https,就会涉及到数字证书,数字证书的概念和原理我们就不介绍了,百度一下就Ok,我们只要知道它是为我们的服务器端和客户端提供身份认证和能为我们的消息提供加密的东东就可以了。首先我们来演示一下制作证书的过程:
Windows server 系统都有证书服务的,我们可以通过添加证书服务来制作证书,具体操作可以参照这篇文章。
我们后面的DEMO环境都是在Win7 +vs2010环境下面进行的,因此我们只能通过MakeCert命令方式创建证书,并通过netsh程序给端口注册证书。
1、MakeCert 命令 可以通过 Visual Studio 命令提示输入“ MakeCert”运行,命令主要参数介绍:(参数有很多,不一一列出,只列出我们使用的)
-n :证书的主题名称;例如 -n "CN=计算机名称"
-pe:将生成的私钥标记可导出;
-sr:数字证书的位置(CurrentUser代表当前帐户;LocalMachine代表本机)
-ss:证书的存储区;-sky: 指定密钥的类型(signature:签名密钥;exchange:交换密钥)
-r :创建自签证书
注意:-n "CN=计算机名称" 默认为计算机名称,实际项目中可以为网站的名称,比如:wwww.xxx.com,当然你也可以使用其他名称,但是在WCF调用的时候会有信任关系异常提示,Demo中我们会进行介绍
2、netsh.exe 位于 C:\Windows\System32 目录下:
查看SSL证书的绑定: netsh> http show sslcert
将证书与端口进行绑定: netsh>http add sslcert ipport=0.0.0.0:端口号 certhash=证书的指纹 appid={一个有效的GUID}
删除端口绑定的证书: netsh>http delete sslcert ipport=0.0.0.0:端口
三、制作一个证书并绑定到ip地址端口:
1、制作证书:
我们启动Visual Studio 命令提示工具,然后输入:makecert -sr localmachine -ss My -n "CN=Lx-PC" -sky exchange -pe -r,回车,提示成功!

如何查看这个证书呢?这个证书放到哪里了呢?
我们可以通过运行MMC命令打开控制台,选择 “文件” 菜单中的 “添加或删除管理单元” 打开该对话框,在弹出的对话框左面选择 “证书” :

并点击 “添加” 弹出 “证书管理” 对话框,我们选择 “计算机帐户” ,并点击 “下一步” ,选择 “本地计算机” 之后,点击完成。当然还可以在继续添加一个 “我的用户帐户”,如下图:

点击 “确定” 之后,我们可以在 “证书(本地计算机)” --“个人”--“证书” 节点中 ,看到我们创建的 “Lx-PC” 证书;

接下来要做的是将该证书加入到 “受信任的根证书颁发机构” 和 “受信任人” 节点中,至于为什么会这么做。举个简单的例子,身份证就是我们的证书,谁是可信任的颁发机构,当然是当地xxx公安单位了,如果不是权威机构发布的证书,那么该证书肯定是有问题的了。
我们 “右击” 我们创建的证书,选择 “所有任务”--“导出”,打开 “证书导出” 对话框,选择 “下一步” 后,选择 “是,导出密钥”

并点击 “下一步”,默认选择“个人信息交换”,

继续点击 “下一步” ,输入 密码 “123456”,

点击 “下一步” 后,选择 “浏览” ,文件命名为 “lxpc.pfx”,并保存到桌面。
之后,我们分别右击 “受信任的根证书颁发机构” 节点和 “受信任人” 节点,选择 “所有任务” --“导入” 。选择我们刚刚导出到桌面的lxpc.pfx 文件,并输入 密码123456,之后,就分别导入到两个节点中了。
2、利用netsh 命令将制作的证书绑定到端口:
这时候我们需要查看证书的指纹: 双击我们的证书,选择详细信息标签

记录下该证书的指纹为:63c06b2292c76391fe075becb01e4a1f350a5a87
接着,我们通过windows 控制台 cmd,运行 netsh 命令,并输入:
http add sslcert ipport=0.0.0.0:9000 certhash=63c06b2292c76391fe075becb01e4a1f350a5a87 appid={BFC5621F-EF33-1234-AD7E-51EDDAEC5234}
结果显示:

我们可以利用 netsh> http show sslcert 来查看我们的证书是否绑定到了9000端口:

由图可见:我们已经将我们刚刚制作的证书 绑定到了 9000端口。
好了,前期证书工作准备完成,下一篇我们来通过利用证书通过SSL实现一个对服务器端进行认证,但是对客户端采用匿名方式的WCF 例子。
重温WCF之WCF传输安全(十三)(1)前期准备之证书制作(转)的更多相关文章
- WCF分布式开发步步为赢(4):WCF服务可靠性传输配置与编程开发
今天继续WCF分布式开发步步为赢系列的第4节:WCF服务可靠性传输配置与编程开发.这个章节,我们要介绍什么是WCF服务的可靠性传输,随便介绍网络协议的概念,Web Service为什么不支持可靠性传出 ...
- WCF 笔记 (2) - 传输泛型 List 对象
WCF 笔记 (2) - 传输泛型 List 对象 本帖介绍怎么在 WCF 中,在 Server-side 和 Client-side 之间,传递默认无法传输的 List<T>.List& ...
- C# WCF学习笔记(二)终结点地址与WCF寻址(Endpoint Address and WCF Addressing) WCF中的传输协议
URI的全称是 Uniform Rosource Identifire(统一资源标识),它唯一标识一个确定的网绐资源,同时也表示资源所处的位置及访问的方式(资源访问所用的网络协议). 对于Endpoi ...
- 使用Fiddler解析WCF RIA Service传输的数据
原文 http://www.cnblogs.com/wintersun/archive/2011/01/05/1926386.html 使用Fiddler 2 解析WCF RIA Service传输的 ...
- WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇]
原文:WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇] 在[第2篇]中,我们深入剖析了单调(PerCall)模式下WCF对服务实例生命周期的控制,现在我们来 ...
- WCF基础之传输
WCF中使用的主要传输的方式有HTTP,TCP和命名管道. 绑定包括可选的协议绑定元素(如安全),必需的编码绑定元素和必须的传输协定绑定元素三个部分,而由传输方式则是由传输绑定元素来决定的. HTTP ...
- WCF大文件传输【转】
http://www.cnblogs.com/happygx/archive/2013/10/29/3393973.html WCF大文件传输 WCF传输文件的时候可以设置每次文件的传输大小,如果是小 ...
- 跟我一起学WCF(13)——WCF系列总结
引言 WCF是微软为了实现SOA的框架,它是对微乳之前多种分布式技术的继承和扩展,这些技术包括Enterprise Service..NET Remoting.XML Web Service.MSMQ ...
- Learing WCF Chapter1 WCF Services
WCF ServicesWCF services are the new distributed boundary in an enterprise application—with an empha ...
随机推荐
- [codeforces 339]C. Xenia and Weights
[codeforces 339]C. Xenia and Weights 试题描述 Xenia has a set of weights and pan scales. Each weight has ...
- 如何将jsp页面的table报表转换到excel报表导出
假设这就是你的jsp页面: 我们会添加一个“导出到excel”的超链接,它会把页面内容导出到excel文件中.那么这个页面会变成这个样子 在此,强调一下搜索时关键词的重要性,这样一下子可以定位到文章, ...
- Laravel 5.1 文档攻略 —— Eloquent:模型关系
简介 其实大家都知道,数据表之间都是可以关联的,前面讲过了,Eloquent ORM是数据模型操作代替表操作,那么表的关联查询,在Eloquent这里也就是模型间的关联查询,这就是本章的主要内容: E ...
- fastx_toolkit软件使用说明
高通量测序数据下机后的原始fastq文件,包含4行,其中一行为质量值,另外一行则为对应序列,我们都了解高通量的数据处理首先要进行质量控制,这些过程包括去接头.过滤低质量reads.去除低质量的3'和5 ...
- Tomcat 7最大并发连接数的正确修改方法
这是个很简单的问题,但是搜了一圈,发现大家都写错了.所以这里总结一下: 几乎所有的中文网页都介绍,要修改Tomcat的默认最大并发连接数,应该进行如下设置(实际上这些步骤是错误的): -------- ...
- 转: 认识 HTTPS
HTTPS简介 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...
- ASP.NET 页生命周期概述
ASP.NET 页生命周期概述 Visual Studio 2005 ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤.这些步骤包括初始化.实例化控件.还原和维 ...
- 【python】python新手必碰到的问题---encode与decode,中文乱码[转]
转自:http://blog.csdn.net/a921800467b/article/details/8579510 为什么会报错“UnicodeEncodeError:'ascii' codec ...
- Failed to issue method call: Unit httpd.service failed to load: No such file or directory.
centos7修改httpd.service后运行systemctl restart httpd.service提示 Failed to issue method call: Unit httpd.s ...
- eclipse 工作环境配置
1.更换编辑颜色, http://eclipse-color-theme.github.io/update/ 下载离线安装包,解压缩 eclipse-color-theme-update-site\u ...