【问题标题】:Exception on SslStream.AuthenticateAsClient (The message was badly formatted)SslStream.AuthenticateAsClient 上的异常(消息格式错误)
【发布时间】:2009-12-10 23:50:29
【问题描述】:

我遇到了奇怪的问题。我正在尝试通过 TCP/SSL 连接到 Apple 服务器。我正在使用 Apple 提供的客户端证书进行推送通知。我在本地受信任的根证书和本地个人证书文件夹中的服务器 (Win2k3) 上安装了证书。

现在我有一个处理该连接的类库,当我从从服务器运行的控制台应用程序调用这个类库时,它工作得非常好,但是当我从 asp.net 页面或 asmx web 调用该类库时服务我得到以下异常。

对 SSPI 的调用失败,请参阅内部异常。收到的消息出乎意料或格式错误。

这是我的代码:

X509Certificate cert = new X509Certificate(certificateLocation, certificatePassword);                       
X509CertificateCollection certCollection = new X509CertificateCollection(new X509Certificate[1] { cert });
// OPEN the new SSL Stream
SslStream ssl = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);                       
ssl.AuthenticateAsClient(ipAddress, certCollection, SslProtocols.Default, false);

ssl.AuthenticateAsClient 是引发错误的地方。

这让我发疯了。如果控制台应用程序可以正常连接,则 asp.net 网络层安全性肯定存在一些问题,无法通过身份验证...不确定,可能需要在 web.config 中添加一些东西或某种安全策略。还要指出的是,我可以在本地开发机器上很好地连接控制台和网站。

有人有什么想法吗?

【问题讨论】:

  • 嗨,我现在面临同样的问题。你是如何解决这个问题的?请帮忙

标签: c# .net apple-push-notifications sspi


【解决方案1】:

您是否在系统上安装了证书?如果您正在运行 Windows,它应该位于管理控制台下的本地计算机/个人或受信任文件夹中(运行 -> mmc)。

【讨论】:

    【解决方案2】:

    ASP.NET 在不同的帐户下运行,因此您必须使用WinHttpCertCfg.exe 工具来允许以下帐户访问您应该安装在本地计算机个人/受信任文件夹中的证书。

    • ASPNET
    • 网络服务
    • 经过身份验证的用户

    例如

    winhttpcertcfg -g -c LOCAL_MACHINE\MY -s "CertificateName" -a "ASPNET"
    

    其中证书名称是您的证书的友好名称。您可以从here获取工具和信息。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题 - 添加 ASP.NET DefaultAppPool/Network Service 用户并没有帮助我。

      我终于发现 ASP.NET Web 服务在受信任的根证书文件夹中时无法访问证书(即使控制台应用程序可以)。我将它拖回 Personal Certificates 文件夹,现在可以从控制台和 Web 应用程序调用该方法。

      【讨论】:

        【解决方案4】:

        将 X509Certificate 更改为 X509Certificate2 并将 X509CertificateCollection 更改为 X509Certificate2Collection

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-06-10
          • 1970-01-01
          • 2011-05-17
          • 1970-01-01
          • 1970-01-01
          • 2011-05-26
          • 2014-04-05
          • 1970-01-01
          相关资源
          最近更新 更多