none
This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case RRS feed

全部回复

  • 已经解决:WCF分布式开发常见错误(23):This could be due to the fact that the server certificate is not configured
    【2】问题原因:
        导致此问题的原因可能是:
        (1)证书没有设置,transport安全模式,需要建立SSL安全套接层或者TLS传输层安全协议。服务器要提供证书。
        (2)WCF终结点地址没有设置证书,这里要建立SSL需要对中节点地址设置证书。
    【3】解决办法:
         (1)制作证书:这里直接使用makecert 工具。Microsoft Visual Studio 2008-->Visual Studio Tools-->Visual Studio 2008 命令提示行里输入:
    makecert -r -pe -n "CN=FrankWCFServer" -ss My -sky exchange
        具体大家可以看文章WSE3.0构建Web服务安全(2):非对称加密、公钥、密钥、证书、签名的区别和联系以及X.509 证书的获得和管理,详细的介绍。具体的参数说明:详细帮助文档:
         (2)设置服务证书:
    behavior name="WCFService.WCFServiceBehavior">
              
    <serviceMetadata httpsGetEnabled="true" />
              
    <serviceDebug includeExceptionDetailInFaults="false" />
              
    <serviceCredentials>
                  
    <serviceCertificate  x509FindType="FindBySubjectName" findValue="WCFHTTPS" storeLocation="CurrentUser"/>
              
    </serviceCredentials>
            
    </behavior>

         (3)为服务终结点地址注册SSL证书:
           现在证书还不可用,需要为使用的端口注册证书。这里需要设置工具,Windows Server 2003 或 Windows XP,则使用 HttpCfg.exe 工具。Windows Server 2003 中已安装该工具。下载该工具/Files/frank_xl/HttpcfgFrankXuLei.rar
    如果运行的是 Windows Vista,则使用已安装的 Netsh.exe 工具。在Windows\System32目录下。
    【4】SSL证书设置过程:
        要查出证书指纹的值,在浏览器--内容--证书里,选择你创建的证书-详细信息--微缩图(thumbprint其实是指纹的意思)把这个值拷贝出来,中间的空格可以再文本编辑器里替换掉。这里WCFHTTPS的是0307d727a369378d077809cf0ed617eec90a0e2f。
    【4.1】查询SSL证书设置:
         (1)在 Windows Server 2003 或 Windows XP 中,通过 queryssl 开关使用 HttpCfg.exe 工具查看当前端口配置,在命令窗口切换到HttpCfg在文件目录,你如下面代码:
        httpcfg query ssl
      
      (2)Vista:
        netsh http show sslcert

    【4.2】设置SSL证书:
        (1)在 Windows Server 2003 或 Windows XP:
           httpcfg set ssl -i 0.0.0.0:9001-h 0307d727a369378d077809cf0ed617eec90a0e2f
        (2)Vista:
           netsh http add sslcert ipport=0.0.0.0:9001 certhash=0307d727a369378d077809cf0ed617eec90a0e2f appid={111111111-2222-3333-4444-qqqqqqqqqqqqq} 。最后一个GUID.你可以随便编写一个。使用工具也可以。certhash 参数指定证书的指纹。ipport 参数指定 IP 地址和端口,功能类似于前述 Httpcfg.exe 工具的 -i 开关。appid 参数为可用于标识所属应用程序的 GUID。
     【4.3】删除SSL证书:
       
        (1)Windows Server 2003 和 Windows XP 中:
        httpcfg delete ssl -i 0.0.0.0:9001-h 0307d727a369378d077809cf0ed617eec90a0e2f
       
        (2)Vista:
        Netsh http delete sslcert ipport=0.0.0.0:9001

    谢谢


    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年8月8日 6:00
    版主