Chinaunix首页 | 论坛 | 博客
  • 博客访问: 990018
  • 博文数量: 78
  • 博客积分: 1473
  • 博客等级: 上尉
  • 技术积分: 2124
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-23 12:50
文章分类

全部博文(78)

文章存档

2016年(6)

2015年(2)

2014年(13)

2013年(4)

2012年(53)

分类: 嵌入式

2012-06-24 15:09:30

 

需要说明是,和服务器端证书配置在<serviceBehaviors>节中,而客户端配置在endpointBehaviors中。在代码清单11-19服务端配置和代码清单11-23客户端配置中,都将certificateValidationMode属性设置为“None”。protectionLevel设置为"EncryptAndSign",由于证书验证采用SSL加密,仅支持EncryptAndSign保护级别。

此时启动服务端进行监听,然后启动客户端,得到如图11-11所示异常信息。

图11-11               DNS匹配错误

出现这种异常原因在于服务端采用证书验证之后,默认会将证书名(这里为“XuanhunServer”)作为服务提供域名。解决方案也很简单,只需在客户配置节下配置标识属性,指定DNS即可,如代码清单11-24所示。

代码清单11-24  配置DNS

<endpoint name="helloEndPoint" address="net.tcp://127.0.0.1:64567/HelloService"

          binding="netTcpBinding" bindingConfiguration="netTcpBinding"

          contract="WcfSecurityExampleServiceLibrary.IHelloService"  behaviorConfiguration="ForListen">

        <identity>

          <dns value="XuanhunServer"/>

        identity>

      endpoint>

在以上代码中,通过设置<dns value="XuanhunServer"/>指定该终结点请求域名为"XuanhunServer"。修改之后再次运行客户端,结果如图11-12所示。

图11-12        凭据为证书(客户端和服务端互不验证)运行结果

将图11-12运行结果,与之前采用Windows验证对比,用户名变成了客户端证书名称和证书序列号组合,凭据类型为“X509”。通过TcpTrace截获信息,可以给我们更多启示,如图11-13所示。

图11-13        TcpTrace截获凭据为证书(客户端和服务端互不验证)部分传输信息

11-13所示信息为服务端返回部分信息,我们从中可以看到信息中附加了当前用户证书存储区证书信息。

----------------------注:本文部分内容改编自《.NET 安全揭秘》

阅读(1886) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~