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 安全揭秘》

posted @   玄魂  阅读(2240)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示