我正试图获得一个自我托管的服务。调用该服务将返回以下内容:
基础连接已关闭:在接收时发生意外错误。
服务端点如下所示
<endpoint address="https://MACHINE:8010/rest/users" binding="webHttpBinding" bindingConfiguration="certificate" contract="Online.DomainObjects.Remote.IUserManagerRemote" />我这么做是为了打开通道:
netsh http add urlacl "url=https://+:8010/" user=BUILTIN\Users我在服务器中打开了WCF跟踪,但在日志中没有获得任何信息,因此这是一个客户端连接问题。
我增加了一种服务行为。
<behavior name="certificate">
<serviceCredentials>
<serviceCertificate
storeLocation="LocalMachine"
x509FindType="FindByThumbprint"
findValue="VALIDTHUMBPRINT" />
</serviceCredentials>
</behavior>我添加了一个绑定配置。
<webHttpBinding>
<binding name="certificate">
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</webHttpBinding>下面的代码用于调用服务
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
var certificate = store.Certificates.Find(X509FindType.FindByThumbprint, "VALIDTHUMBPRINT", false).OfType<X509Certificate2>().First();
var request = (HttpWebRequest) WebRequest.Create("https://machine:8010/rest/users/display?key=OnlineStanlibId(1653510)");
request.ClientCertificates.Add(certificate);
request.Method = "GET";
using (var reader = new StreamReader(request.GetResponse().GetResponseStream()))
reader.ReadToEnd().Dump();如果我尝试使用fiddler (使用ssl解码)来检查错误,我就会得到这样的结果。
A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.
Version: 3.1 (TLS/1.0)
Random: 53 F3 39 10 E8 4B 5C D6 17 02 8B A0 42 CD 98 B7 37 56 3F B4 35 E6 3E B5 15 89 3B 6D E9 8F BA 19
SessionID: empty
Extensions:
renegotiation_info 00
server_name slc11555001
elliptic_curves secp256r1 [0x17], secp384r1 [0x18]
ec_point_formats uncompressed [0x0]
Ciphers:
[002F] TLS_RSA_AES_128_SHA
[0035] TLS_RSA_AES_256_SHA
[0005] SSL_RSA_WITH_RC4_128_SHA
...(There are more of these)任何关于如何进一步调试的建议都是很棒的.
提示文本视图显示: HTTPS握手“机器”失败。System.IO.IOException无法从传输连接读取数据:
发布于 2014-08-19 15:50:25
在创建使用传输安全性的自托管Windows通信基础(WCF)服务时,还必须使用X.509证书配置端口。为了将证书绑定到服务,您需要使用‘’命令,并提供证书的拇指打印、应用程序/服务guid和ip/端口。
netsh http add sslcert ipport=0.0.0.0:8000 certhash=000...a5e6 appid={001-...-FEFF} 以下链接提供了一个很好的参考:
http://msdn.microsoft.com/en-us/library/ms733791(v=vs.110).aspx
https://stackoverflow.com/questions/25382863
复制相似问题