重温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 ...
随机推荐
- iOS中的时间和日期
怎么说?时间和日期不是了不起的属性.了不起的功能,但是,我们决不能够因此就“冷落”它. 一:怎么“搞到货”--如何获取时间.日期 //-=-==当前时间------默认显示“0时区”时间 NSDate ...
- Sqli-LABS通关笔录-14
这一节让我学习到了 1.extractvalue函数(该函数用于对xml文件进行查询和修改,于此相关的还有一个叫“updatexml”函数) 语法:extractvalue(XML_document, ...
- Mean Shift Tracking: 2000-2012回顾 (新论文更新)
参考: Mean Shift Tracking: 2000-2012回顾 (新论文更新) ECCV2016要来了,估计深度学习要一统天下了吧
- explicit,violate,volatile,mutable小结
转自:http://blog.csdn.net/helonsy/article/details/7091130 explicit:放在构造函数前面可以阻止构造函数的隐式类型转换.这样可以避免不必要的错 ...
- caffe学习系列(2):训练和测试自己的图片
参考:http://www.cnblogs.com/denny402/p/5083300.html 上述主要介绍的是从自己的原始图片转为lmdb数据,再到训练.测试的整个流程(另外可参考薛开宇的笔记) ...
- tornado 排程
https://groups.google.com/forum/#!topic/python-tornado/KEmAg97zUg8 鉴于不是所有人都能跨越GFW,摘抄如下: Scheduled jo ...
- apache开启虚拟主机localhost无法访问
今天在集成环境下配虚拟主机,没想到虚拟主机开启后,localhost竟然无法访问了,解决办法是这样的: 实例一,Apache 配置localhost虚拟主机步骤 1,用记事本打开apache目录下ht ...
- ffmpeg-20160512-git-bin
ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...
- ajax加载表格数据
一.html代码 <style type="text/css"> .table-taskinfo table tr { border-top: 2px solid #9 ...
- asp.net中获取当前url的方法
HttpContext.Current.Request.Url.ToString() 并不可靠. 如果当前URL为 http://localhost/search.aspx?user=http://c ...