none
自定义证书验证的问题 RRS feed

  • 问题

  • 版主您好:
                 看了您的传输安全模式之自定义X509Certificate证书验证,自己做了做出了点问题。我设置了自定义,但是不起作用,服务端依然是验证客户端的证书是不是被信任。每次验证无论成功与否,都不会输出Validate方法中的信息,给您贴一下我的配置文件代码,希望您能帮我解答。
    <behaviors>
            <serviceBehaviors>
              <behavior name="behavior">
                <serviceMetadata/>
                <serviceCredentials>
                  <serviceCertificate findValue="86cd5ecfba6846a44a89f2f06aaff662" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySerialNumber"/>
                  <clientCertificate>
                    <authentication certificateValidationMode="Custom" customCertificateValidatorType="自定义证书验证服务.CustomX509CertificateValidator,自定义证书验证服务"/>
                  </clientCertificate>
                </serviceCredentials>
              </behavior>
            </serviceBehaviors>
          </behaviors>
    <bindings>
            <wsHttpBinding>
              <binding name="binding">
                <security mode="Transport">
                  <transport clientCredentialType="Certificate"/>
                </security>
              </binding>
            </wsHttpBinding>
          </bindings>
    客户端
    <bindings>
                <wsHttpBinding>
                  <binding name="WSHttpBinding_IWCFService">
                    <security mode="Transport">
                      <transport clientCredentialType="Certificate"/>
                    </security>
                  </binding>
                </wsHttpBinding>
            </bindings>
    
    
    s.ClientCredentials.ClientCertificate.Certificate = new X509Certificate2(@"E:\代码\WCF高级编程\wcf安全\利用证书身份验证客户端\catClient.pfx", "123");
    另外原来有个问题在上个帖子问了,貌似您没看到。
    您好,我看了您的传输安全模式之匿名客户端后按照您的文章做了下,很成功,但是我有几个问题。
    1.我在验证服务器证书的回调方法中查看了一下SslPolicyErrors error这个参数,发现这个参数包含RemoteCertificateNameMismatch项,我很奇怪它代表的意思是证书名称不匹配,为什么会出现这种情况?既然不匹配那是不是应该验证失败啊?
    2009年10月21日 13:18

全部回复

  • 不好意思。我忘记回答了。别介意啊~
    1.sslPolicyErrors 是一个枚举类型,主要是表示远程服务器证书验证的错误结果。
    None 无 SSL 策略错误。 
      RemoteCertificateChainErrors ChainStatus 已返回非空数组。 
      RemoteCertificateNameMismatch 证书名称不匹配。 
      RemoteCertificateNotAvailable 证书不可用。 

    我们这里为了调试WCF的传输安全,服务器证书客户端可能存在不信任等问题,这个是临时制作的证书。所以在客户端加了一个RemoteCertificateValidate方法,无论如何都返回True,强制信任服务器证书,这样才能建立SSL连接。
     SslPolicyErrors.RemoteCertificateNameMismatch一般是访问的url名字和证书中的cnname名称不一致

    临时解决办法可以在本地host文件中加入

    证书域名    访问IP地址
    http://hi.baidu.com/ju_feng/blog/item/36d24358e7ddfbd69d82041d.html


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年10月22日 1:28
    版主
  • 1.你下载我的代码。能运行吗?
    /Files/frank_xl/2.5.WCFServiceSecurityDemoFrankXuLei_Transport_X.509Certificate_WSHttpBinding.rar
    参考一下里面的配置。
    主要是配置自定义证书验证的组件。
    可以参考一下配置文件
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年10月22日 1:31
    版主
  • 版主您好:
                 我下载了您的代码进行的改写,我只改动了服务端的端口和证书配置以及客户端的端口以及证书配置,但是运行的时候不会进行验证,就和用证书验证的情况一样,并不会输出客户端证书的指纹等信息,但是我做WCF分布式安全开发实践(12)消息安全模式之自定义X509证书验证Message_CustomX509Certificate_WSHttpBinding -的时候是成功的。所以感觉很诧异...
                我在443端口配置了证书,然后服务端设置了这个端口,这样做应该没问题吧?望您解答。谢谢!
    2009年10月23日 2:09
  • 您好版主:
                 对于RemoteCertificateNameMismatch的解决办法,我仍然不太懂。
                临时解决办法可以在本地host文件中加入证书域名和访问IP地址,请问您,证书域名怎么找?访问IP地址是不是服务端的地址?例如:10.187.202.10:443?
                谢谢!
     

    2009年10月23日 2:26
  • 消息安全的自定义证书验证,你可以传输安全的对比一下,差别就在安全模式不一样。
    也可以从Message_CustomX509Certificate_WSHttpBinding代码修改过来。
    自定义部分的配置有些相似


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年10月23日 4:58
    版主
  • 你看些这个帖子:
    http://topic.csdn.net/u/20080704/17/76f0f565-374c-411c-ab9a-12d5b01411e6.html

    服务器上颁发的证书的名字要和你的web域名相同

    这个应该就是证书的Subject。
    你重新制作一个。

    如果还不能解决,在加上服务器IP地址
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年10月23日 5:09
    版主
  • 版主您好:
                关于传输模式的自定义证书验证我依然没有解决,我把消息模式的代码进行了改变也没有成功,我发现您的WCF分布式安全开发实践(6)传输安全模式之自定义X509Certificate证书验证:Transport_X509Certificate_WSHttpBinding 中,最后执行的结果并不像WCF分布式安全开发实践(12)消息安全模式之自定义X509证书验证Message_CustomX509Certificate_WSHttpBinding 那样,有指纹验证的结果,传输安全模式中,并没有执行指纹验证的代码,我看您播客下面的回复中也有人问到您这个问题,我很是疑惑,望您解答。谢谢!
    2009年10月25日 6:10
  • 谢谢你的提醒。我看了一下代码,确实存在你说的问题。
    我再调试一下。尽快给你答复~

    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年10月25日 14:20
    版主
  • 目前我在翻译WCF技术内幕。这个问题,我还没找出原因。你要是不着急的话,先看一下别的安全编程的例子。
    我有时间会继续跟踪原因。
    这个帖子,就不要关闭。也算个提醒。
    请你多包涵啊。~


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年10月26日 16:10
    版主
  • 您好版主:
                   您太客气了,您做好后给我个回复就好了,谢谢您了!
    2009年10月29日 5:20
  • 顶下 继续研究啊 啊啊啊啊
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    微软WCF中文技术论坛
    微软WCF英文技术论坛

    Windows Azure中文技术论坛

    2011年3月4日 13:46
    版主