WCF 匿名客户端证书安全验证
之前介绍过X.509证书的一些知识,http://xiaogangblog.com/archives/224 可以参考这篇.
本篇要介绍的是 匿名客户端证书验证,简单的说就是 服务器端提供证书签名, 客户端匿名调用.
匿名客户端验证有什么用?可以建立相对安全的链接,对于一些不是很重要的数据传输。避免了每次让客户端都验证证书的麻烦。也可结合前文讲的自定义用户名密码来提升安全级别。
(现在的购买正规的证书服务还是很贵滴)
建立服务端
代码很简单:
默认的代码,主要看配置文件:
<serviceCertificate x509FindType="FindBySubjectName" findValue="MyServer" storeLocation="LocalMachine"/>
配置证书的名称,以及存放位置.
Binds节点:
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
改成传输安全模式,因为是匿名客户端,所以这里clientCredentialType设置成None,忽略客户端证书
客户端代码就不写了,在VS2010里面直接添加服务器端引用,就可以.在添加之前我们先把这个服务端的WCF部署到测试机上.
WCF部署
首先发布出来的文件包括一个svc文件bin文件,以及web.config
为了做测试我在windows server2008 和winddows server2003上各做了测试,两者没啥太大的区别,这里以2003为例子:
新建网站,将站点部署上去:
确保IIS和WCF配置正确,
注册WCF:
C:\WINDOWS\Microsoft.NET\Framework\v3.0\WindowsCommunication Foundation>ServiceModelReg.exe /i /x
注册IIS:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe –i
如果出现IIS 访问404 记得勾选WEB扩展里面的ISAPI扩展 ,以及开启.netframwork
按后确保WCF文件可以访问.
配置证书服务,在 win2003下开启证书服务之后会自动在默认网站下创建一个asp的证书服务站点.
注:此处如果没有自动创建该站点,也许是你的默认网站已经删除,或者没有开始以80端口的网站。
然后访问:https://localhost/certsrv/default.asp 就可以看到页面了。
详细的证书申请请参照如下网站
创建开发期间的临时证书http://msdn.microsoft.com/zh-cn/library/ms733813.aspx
这个是通过命令行来创建,其实现在可以直接用可视化窗口来创建了。
详细的证书创建步骤:http://www.cnblogs.com/yjmyzz/archive/2008/08/21/1273201.html
下面提供一个免费的SSL证书申请的网站:http://www.startssl.com/
这里是详细的教程 http://blog.s135.com/startssl/
最后记得开启IIS的SSL访问:
因为我是匿名客户端访问,可以忽略客户端证书。
然后用https:// 来访问我们的服务就可以了。
这样客户端访问的时候使用vs2010默认给我们生成好的web.config 就可以了.
本篇博客同步发布在我的博客http://xiaogangblog.com/archives/289.欢迎转载.