获取错误107(net :: ERR_SSL_PROTOCOL_ERROR):SSL协议错误
我知道在stackoverflow上有很多与相同主题相关的问题,但在这里我有一些不同的问题:
我使用installer class
来reserve a port
并在win7/Winxp
上bind it with hash
:
if (Environment.OSVersion.Version.Major > 5) { startInfo.Arguments = @"/c netsh http add urlacl url=https://127.0.0.1:8083/ user=EVERYONE"; netsh http add sslcert ipport=127.0.0.1:8083 certhash=df03c4b0b32f3302a3b70abe6b5dfd864d0986a5 appid={00112233-4455-6677-8899-CCBBCCDDEEFF} clientcertnegotiation=enable; } else { startInfo.Arguments = @"/c httpcfg set urlacl /u https://127.0.0.1:8083/"; httpcfg set ssl -i 127.0.0.1:8083 -h df03c4b0b32f3302a3b70abe6b5dfd864d0986a5 -f 2 }
代码和setup project
没有任何问题。 一切正常,除了以下几点:
- 每当我在
win7
上安装exe
,它都会成功运行WCF
Web服务。 -
每当我在本地计算机上使用
WinXP(SP#)
,它会抛出一个错误:错误107(net :: ERR_SSL_PROTOCOL_ERROR):SSL协议错误
-
但是当我使用teamviewer登录任何
WinXp
虚拟机时,它运行成功。
怎么可能,我试了好几次但得到了同样的结果。 它运行在Xp(在VM上运行)但不在真正的XP机器上运行?
我是否写错了绑定并保留端口? 防火墙在这里起作用吗?
我还用httpcfg query ssl
确认了它,并且哈希与端口成功绑定。
任何帮助都会很明显。
IMO此命令不起作用: netsh http add urlacl url=https://127.0.0.1:8083/ user=EVERYONE
我试图用fiddler
找出错误,它说:
"Failed to secure existing conection for . Authentication failed because the remote party has closed the transport stream."
本地XP机器的配置可能与虚拟机的配置不同。 我能想到的一个场景是,IT部门会以一种方式配置XP机器,然后您自己创建一个虚拟机,它只使用默认设置(不同)。 我不是说这是你的情景,只是一个场景 。 另一个是机器已经过时/未更新,这不是配置问题,而是存在错误。
无论如何,我要说你的XP安装错误地确定证书是无效的 ,这是VM不共享的特征。 您对防火墙设置的评论也可能是准确的 – 请尝试Google。
祝好运!
这可能看起来很愚蠢,但有些应用可能会使用像Team Viewer甚至Skype这样的SSL端口。 尝试关闭此应用程序,以防您在计算机上运行其中一些应用程序!
对不起,这只是一个猜测:)但我希望它有帮助……
执行以下SetUp berfoe调用您的WCF服务
ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
有关更多详细信息,请参阅: 使用带有.NET的HttpWebRequest / Response的自签名证书