gpt4 book ai didi

wcf - 在 XP SP3 上使用 SSL 的自承载 WCF 服务

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:19 25 4
gpt4 key购买 nike

我在 StackOverflow、博客和其他网站上看到了大约 1000 篇帖子,但没有一篇能够阐明我遇到的问题。

设置:

  • 使用 .NET Framework 3.5(抱歉,无法升级)、WebHttpBinding 的 WCF 自托管服务(非 IIS)
  • 在界面中使用 WebGet 的单个端点
  • 没有 .config 文件——一切都是以编程方式创建的
  • 该服务绑定(bind)到自定义端口,不与任何其他服务或网站共享端口

部署目标:

  • XP SP3、2003、Vista、7、8、2008

问题:在 Vista、7、8、2008 上我没有问题。我正在使用绑定(bind)到本地主机的自签名证书以及自定义端口上的机器名称,在 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 等),所有结果都相同(或更糟)。因此,我没有来回试图弄清楚我做了什么并挑选我现有的设置,而是有 2 个问题:

  1. 是否有可能在没有 IIS 的情况下为本地主机在 XP 上创建受信任的证书并且...
  2. 将其绑定(bind)到自托管 WCF 服务并以编程方式完成所有操作的最佳方法是什么?我重复这一点,因为在这些问题上寻求帮助的其他尝试总是会导致人们告诉我要在配置文件中放入什么。

要记住的事情:我已经在 Windows 版本 > XP/2003 下使用自签名证书在 SSL 下正常工作,所以我知道基本原理有些健全。我似乎无法在 XP 下为本地主机设置证书。

最佳答案

我的回答基于这样一个假设:如果您从客户端代码进行 WCF 调用,您将收到“无法为 SSL/TLS 安全建立信任关系……”异常。

如果这是真的,我建议您实现自定义 ICertificatePolicy 并在进行 WCF 调用时使用它。这是一个示例实现。

using System.Net;  
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;

namespace Foo.bar
{
public class MyCertificatePolicy : ICertificatePolicy
{


public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem)
{
//Due an Invalid Certificate used in the site, we must return true to all invalid SSL Request. Alternately, write the logic to validate the server certificate
return true;
}



public static bool RemoteCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
//Due an Invalid Certificate used in the site, we must return true to all invalid SSL Request
return true;
}
}
}

关于wcf - 在 XP SP3 上使用 SSL 的自承载 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14065652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com