16

我知道在stackoverflow上有很多与相同主题相关的问题,但在这里我有一些不同的问题:

我使用了installer classtoreserve a portbind it with hashon win7/Winxp

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. 一切正常,除了以下几点:

  • 每当我安装它时exe,它都会成功win7运行WCFweb 服务。
  • 每当我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 <ipaddress>.  Authentication failed because the remote party has closed the transport stream."
4

3 回答 3

1

本地 XP 机器的配置可能与虚拟机的配置不同。我能想到的一种情况是,IT 部门会以一种方式配置 XP 机器,然后您自己创建虚拟机,它只是使用默认设置(不同)。我并不是说这是你的场景,只是一个场景。另一个是机器已过时/未更新,这与其说是配置问题,不如说是存在错误。

无论如何,我会说您安装的 XP 错误地确定证书无效,这是 VM 不共享的一个特征。您对防火墙设置的评论也可能是准确的 - 试试 Google。

祝你好运!

于 2013-06-14T17:08:35.853 回答
0

这可能看起来很愚蠢,但某些应用程序可以使用 SSL 端口,例如 Team Viewer 甚至 Skype。尝试关闭此应用程序,以防您的机器上运行其中一些应用程序!

对不起,这只是一个猜测:) 但我希望它有帮助......

于 2013-07-22T16:07:53.117 回答
0

执行以下设置 berfoe 调用您的 WCF 服务

ServicePointManager.ServerCertificateValidationCallback =
            delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };

有关更多详细信息,请参阅: Using a self-signed certificate with .NET's HttpWebRequest/Response

于 2014-08-29T12:26:09.107 回答