• 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/
    原文链接:http://www.cnblogs.com/xuanhun/ 更多内容,请访问我的个人站点 对编程,安全感兴趣的,加qq群:hacking-1群:303242737,hacking-2群:147098303,nw.js,electron交流群 313717550。
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    关注我:关注玄魂的微信公众号

  • 相关阅读:
    反射
    IDEA配置数据库
    配置idea的maven镜像为aliyun
    蓝桥---芯片测试(思维)
    汉诺塔(思维、DP思想)
    立方数(质因子、优化)
    碎碎念(DP)
    牛牛战队的比赛地(三分)
    子段乘积(尺取、逆元)
    子段异或(位运算)
  • 原文地址:https://www.cnblogs.com/xuanhun/p/2560086.html
Copyright © 2020-2023  润新知