none
为什么传输安全模式需要在客户端调用Util.SetCertificatePolicy方法 RRS feed

  • 问题

  •  1、为什么传输安全模式需要在客户端调用Util.SetCertificatePolicy方法,而消息安全模式不需要呢?这个方法到底作用是什么?正常情况下应该写些什么呢?

    问题来自:任亮 .
    WCF学习交流群:group535993@msnzone.cn
    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
    2010年1月11日 3:14
    版主

答案

  • 因为传输安全模式,客户端要验证服务器的证书,这里是强制验证通过。Util的代码定义如下:

    public static class Util
        {
            
    /// <summary>
            
    /// Sets the cert policy.
            
    /// </summary>
            public static void SetCertificatePolicy()
            {
                ServicePointManager.ServerCertificateValidationCallback
                           
    += RemoteCertificateValidate;
            }

            
    /// <summary>
            
    /// Remotes the certificate validate.
            
    /// </summary>
            private static bool RemoteCertificateValidate(
               
    object sender, X509Certificate cert,
                X509Chain chain, SslPolicyErrors error)
            {
                
    // trust any certificate!!!
                System.Console.WriteLine("Warning, trust any certificate");
                
    return true;
            }
        }
    我们自己制作的证书容易出现这个问题。
    .NET Framework 类库<!---->
    ServicePointManager.ServerCertificateValidationCallback 属性<!---->
    <!--Content type: DocStudio. Transform: devdiv2mtps.xslt.-->

    注意:此属性在 .NET Framework 2.0 版中是新增的。

    获取或设置用于验证服务器证书的回调。

    不然就会出错。The underlying connection was closed: Could not establish trust relationship
    for the SSL/TLS secure channel.
    http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/1591a00d-d431-4ad8-bbd5-34950c39d563

    你也可以参考这个文章
    WCF分布式开发常见错误(24):Could not establish trust relationship for the SSL/TLS secure channel with authority
    http://www.cnblogs.com/frank_xl/archive/2009/08/10/1541911.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
    2010年1月11日 3:26
    版主