我在 StackOverflow、博客和其他网站上看到了大约 1000 篇帖子,但没有一个能够阐明我遇到的问题。
设置:
- 使用 .NET Framework 3.5(抱歉,无法升级)、WebHttpBinding 的 WCF 自托管服务(非 IIS)
- 在界面中使用 WebGet 的单个端点
- 没有 .config 文件——一切都是以编程方式创建的
- 该服务绑定到自定义端口,不与任何其他服务或网站共享端口
部署目标:
- XP SP3, 2003, Vista, 7, 8, 2008
问题:在 Vista, 7, 8, 2008 上我没有问题。我正在使用绑定到本地主机的自签名证书以及自定义端口上的机器名称在 HTTP 和 HTTPS 上启动并运行该服务。
- 但是在 XP 上,我只能在 HTTP 上运行,所以我知道服务本身运行正常。在 HTTPS 上,由于 SSL 故障,我无法建立连接。
- 如果我直接在浏览器中点击 URL,我会看到 SSL 异常。
- 在 IE 中,它会给出证书不受信任的警告。当我允许异常时,它会进入服务并执行。如果我添加
https://localhost
到受信任的站点,我将不再看到警告,并且可以毫无问题地点击 URL。 - 当我在 Chrome 中点击相同的 URL 时,我收到错误 107 ERR_SSL_PROTOCOL_ERROR 并且我无法绕过它。
- 在 Firefox 中,我收到一个 ssl_error_rx_record_too_long 错误,它也无法绕过。
我经历了几种证书排列以及将它们分配给服务的方法(httpcfg 等),所有结果都相同(或更糟)。因此,与其来回试图弄清楚我做了什么并挑选出我现有的设置,我有两个问题:
- 是否有可能在没有 IIS 的情况下在 XP 上为本地主机创建受信任的证书...
- 将它绑定到自托管 WCF 服务的最佳方法是什么?一切都以编程方式完成?我重复这一点,因为在这些问题上寻求帮助的其他尝试总是导致人们告诉我在配置文件中放入什么。
要记住的事情:我已经在 Windows 版本 > XP/2003 下使用自签名证书在 SSL 下正常工作,所以我知道基本原理有些健全。我似乎无法在 XP 下为 localhost 设置证书。