博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF分布式开发常见错误(23):the fact that the server certificate isn't configured with HTTP.SYS...
阅读量:6712 次
发布时间:2019-06-25

本文共 2653 字,大约阅读时间需要 8 分钟。

  当使用Transport安全模式,WSHTTPBingding, 客户端认证类型为Windows:clientCredentialType="Windows" .

    安装了证书,也添加了客户端服务引用。启动服务宿主,客户端也添加了账号。结果就出错了。
   信息如下:
    An error occurred while making the HTTP request to  . This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server.
   可能是由于服务器证书在HTTPS 箱子里与HTTP.SYS 设置不匹配。也可以由于客户端和服务端之间的绑定不一致导致。
    问题发到WCF中英文论坛,一个WCF英文论坛版主Richard,给了提示。他自己的一个连接。我看了一下。有点收获。
WCF中文论坛问题地址:
WCF英文论坛问题地址:
【1】错误信息截图:
【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 exchan
ge
    具体大家可以看文章
,详细的介绍。具体的参数说明:详细帮助文档:
     (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 中已安装该工具。下载该工具 。
如果运行的是 Windows Vista,则使用已安装的 Netsh.exe 工具。在Windows\System32目录下。
【4】SSL证书设置过程:
    要查出证书指纹的值,在浏览器--内容--证书里,选择你创建的证书-详细信息--微缩图(thumbprint其实是指纹的意思)把这个值拷贝出来,中间的空格可以再文本编辑器里替换掉。这里WCFHTTPS的是0307d727a369378d077809cf0ed617eec90a0e2f。
【4.1】查询SSL证书设置:
     (1)在 Windows Server 2003 或 Windows XP 中,通过 
query 和 
ssl 开关使用 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
【5】总结:
   配置完成以后,就可以启动托管宿主了。SSL证书配置相对复杂。在实现传输安全的是时候需要设置证书到特定的端口。很多代码都没给出提示。这个需要注意。大部分文章之给出理论,实际对问题解决参考不大,代码实际开发需要自己实践。我在解决这个问题的时候,尝试了很多方式。结果结果就是不对,快包崩溃的时候,试验成功了。这个就是最开心的。
运行宿主结果如下: 
参考资料:
1.
2.
3.
4.
 本文转自 frankxulei 51CTO博客,原文链接:http://blog.51cto.com/frankxulei/320950,如需转载请自行联系原作者
你可能感兴趣的文章
当“大系统”遇上“小末梢”
查看>>
go 交换两个变量的值 忒带劲了
查看>>
China官方NTP server
查看>>
JVM调优总结
查看>>
Linux 6下yum方式安装配置LAMP平台
查看>>
OpenCASCADE Coordinate Transforms
查看>>
loadrunner安装
查看>>
pt-query-digest查询日志分析工具
查看>>
张明贵-Linux基础命令学习-5
查看>>
模拟Linux开机故障与解决方案
查看>>
三大范式和五大约束
查看>>
vmware DELL定制
查看>>
&nb
查看>>
lombok的builder设置默认值的问题
查看>>
lvs的nat模式
查看>>
Java 数组 之 一维数组 追加 元素
查看>>
Keil uVision4复杂运用教程
查看>>
OSPF 基本配置
查看>>
猜拳游戏
查看>>
MySQL学习笔记(三)
查看>>