WCF NetTcpBinding Transport安全模式(6) ClientCredentialType证书验证模式---- PeerTrust验证模式

简介:

WCF NetTcpBinding Transport安全模式(6)   ClientCredentialType证书验证模式---- PeerTrust验证模式

当证书验证模式设置为“PeerTrust”时,服务端或者客户端会验证证书是否存在于TrustedPeople 证书存储区中。

修改配置文件采用“PeerTrust”验证模式如以下代码。

在服务端设置对客户端的验证模式设置为“PeerTrust”:

           <clientCertificate >

              <certificate findValue="XuanhunClient"

                            storeLocation="CurrentUser"

                            storeName="My"

                            x509FindType="FindBySubjectName"/>

     <authentication certificateValidationMode="PeerTrust" trustedStoreLocation="CurrentUser"  />

            </clientCertificate>

在客户端设置对服务端验证模式设置为“PeerTrust”:

   <serviceCertificate >

    <defaultCertificate 

                 x509FindType="FindBySubjectName"

                storeLocation="CurrentUser"

              storeName="My"

                findValue="XuanhunServer"

                />

<authentication certificateValidationMode="PeerTrust"  />

            </serviceCertificate>

在运行程序之前,先来看看前面生成证书目前存放在哪里。启动mmc控制台,添加新管理单元,选择证书,然后添加当前用户和本地计算机两个节点,如图11-14所示。

图11-14               添加证书管理单元

添加管理单元之后,查看当前用户下各类证书,如图11-15所示。

图11-15        查看证书

在图11-15中可以看到,生成证书“XuanhunClient”和“XuanhunServer”在当前用户个人存储区中,不在受信任人存储区中。

运行服务端和客户端,在客户端报出异常,如图11-16所示。

图11-16        证书不在被信任人存储区中

从图11-16异常信息可以明显地看出,如果证书不在受信任人存储区中,采用“PeerTrust”验证模式时是无法通过验证。有没有办法将这两个证书放到受信任人证书存储区中呢?其实很简单,只需要在证书管理单元中将两个证书拖拽到受信任人存储区中即可,如图11-17所示。

图11-17        将证书添加到受信任人存储区

现在运行程序,是不是就可以通过验证了呢?还不行,不要忘记修改配置文件中storeName”属性为“TrustedPeople”。

修改客户端“storeName”属性:

 <clientCertificate

               findValue="XuanhunClient"

                storeLocation="CurrentUser"

                x509FindType="FindBySubjectName"

                storeName="TrustedPeople"/>

修改服务端“storeName”属性:

    <serviceCredentials >

            <serviceCertificate

               x509FindType="FindBySubjectName"

                storeLocation="CurrentUser"

                storeName="TrustedPeople"

                findValue="XuanhunServer"

             />

 </serviceCredentials>

运行测试程序,结果如图11-18所示。

图11-18        PeerTrust”验证模式运行结果

11-18 所示为客户端显示结果,说明客户端和服务端证书已经通过相互验证。

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


本文转自玄魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/archive/2012/06/24/2560086.html,如需转载请自行联系原作者

目录
相关文章
|
11月前
|
C# 数据安全/隐私保护
c#如何创建WCF服务到发布(SqlServer版已经验证)
c#如何创建WCF服务到发布(SqlServer版已经验证)
46 0
|
网络协议 安全 Windows
WCF如何绑定netTcpBinding寄宿到控制台应用程序详解
新建一个WCF服务类库项目,在其中添加两个WCF服务:GameService,PlayerService
WCF如何绑定netTcpBinding寄宿到控制台应用程序详解
|
安全 网络协议 网络安全
WCF安全3-Transport与Message安全模式
WCF安全3-Transport与Message安全模式
113 0
WCF安全3-Transport与Message安全模式
|
存储 算法 安全
WCF安全2-非对称加密
WCF安全2-非对称加密
141 0
WCF安全2-非对称加密
|
安全 数据安全/隐私保护
WCF安全1-开篇
WCF安全1-开篇
111 0
WCF安全1-开篇
WCF入门(三)——消息交换模式
在WCF中的消息交换模式: (一)one way 单向:使用单向操作时,只能传输一个消息。 接收方不发送答复消息,发送方也不需要获得答复消息。如果是单向,那么意味着服务处理客户请求的过程中出现的异常信息,也无法传递到客户。
600 0
|
12月前
|
前端开发
WCF更新服务引用报错的原因之一
WCF更新服务引用报错的原因之一
|
11月前
|
安全 数据库连接 数据库
WCF服务创建到发布(SqlServer版)
在本示例开始之前,让我们先来了解一下什么是wcf? wcf有哪些特点? wcf是一个面向服务编程的综合分层架构。该架构的项层为服务模型层。 使用户用最少的时间和精力建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案。且能与已有系统兼容写作。 简单概括就是:一组数据通信的应用程序开发接口。
83 0
|
12月前
Visual Studio 2022 创建 WCF服务 找不到
Visual Studio 2022 创建 WCF服务 找不到