- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个奇怪的问题:我在基于 .net2 的 c# 中编写了一个服务器和客户端,它们正在通过 .net 2 SslStream 聊天。 Cl和S之间有1个发送命令的连接,cl和s之间有1个发送文件的连接。
在本地,我的 Windows 机器上一切正常。但是如果我在我的 Linux 服务器上运行服务器(使用单声道),共享文件在某些情况下不起作用。我有不同的文件类别,在 3 个文件中有 2 个文件正常工作,在第三个文件中,服务器卡在 SSLStream.AuthenticateAsServer(....);
上,客户端抛出异常消息“对 SSPI 的调用失败,请参阅内部异常”。innerexception 是一个 System.ComponentModel.Win32Exception 消息“收到的消息是意外的或格式错误。”
我认为我在 linux 上运行它的方式可能是错误的。实际上我使用 VS2012 进行本地开发,当我想将它放在服务器上时,我通过 VS 上传编译后的 exe,我使用 mono server.exe
启动它。但我也尝试在 Windows 上使用 modevelop 来编译它(从 monodevelop 编译的东西也可以在本地工作)并在 linux 服务器上使用它,但结果相同。
任何帮助将不胜感激。
这是我的缩短代码:
客户:
//gets auth guid before, then it does
Thread Thre = new Thread(sendfile);
Thre.Start(authguid);
private void sendfile(string guid){
TcpClient cl = new TcpClient();
cl.Connect(hostname, 8789);
SslStream Stream = new SslStream(cl.GetStream(), true, new RemoteCertificateValidationCallback(ServerConnector.ValidateServerCertificate));
Stream.AuthenticateAsClient(hostname);//throws the exception
//sends auth guid and file
}
服务器:
public class FServer
{
protected static bool halt = false;
protected List<FConnection> connections;
private TcpListener tcpServer;
private IPEndPoint ipEnde = new IPEndPoint(IPAddress.Any, 8789);
private delegate void dlgAccept();
private dlgAccept accepting;
private IAsyncResult resAccept;
public FServer()
{
tcpServer = new TcpListener(ipEnde);
connections = new List<FConnection>();
tcpServer.Start();
accepting = new dlgAccept(accept);
resAccept = accepting.BeginInvoke(null, null);
}
public void accept()
{
do
{
if (tcpServer.Pending())
connections.Add(new FConnection(tcpServer.AcceptTcpClient(), this));
else
Thread.Sleep(750);
} while (!halt && tcpServer != null);
}
public class FConnection
{
public SslStream stream;
//.....some other properties
public static bool ValidateClientCertificate (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
public FConnection(TcpClient cl, FServer inst)
{
instance = inst;
client = cl;
stream = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateClientCertificate), null);
stream.AuthenticateAsServer(instance.mainserver.serverCert, false, SslProtocols.Tls, false);//hangs sometimes on this
if (stream.IsAuthenticated && stream.IsEncrypted)
{
}
else
{
this.Dispose();
}
//auth and receiving file
}
}
}
最佳答案
好的,我对 innerexception 进行了更深入的研究,并在此处找到了解决方案:
感谢来自 MSDN 的 paksys
问题出在客户端,我改了
Stream.AuthenticateAsClient(hostname);
到
X509Certificates.X509Certificate2Collection xc = new X509Certificates.X509Certificate2Collection();
Stream.AuthenticateAsClient(hostname, xc, Security.Authentication.SslProtocols.Tls, false);
关于c# - SSLStream: "A Call to SSPI Failed"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122093/
我正在开发一个 .NET 应用程序,我试图在其中构建数据库脚本。在构建项目时,我收到错误“无法创建 SSPI 上下文。”。此错误显示在输出窗口(VS2008 屏幕内)中,并且构建过程失败。请帮忙解决这
我使用的是 Windows XP Pro SP3。我想在我的代码中使用 SSPI 函数。我编译了我的代码,没有错误。 我将安全包设置为用于协商,这是推荐的。 当我启动我的程序时,Negotiate 无
我正在尝试创建一个 SEC_WINNT_AUTH_IDENTITY 以用于调用 AcquireCredentialsHandle 以获得此身份的凭据。但是我很难创建身份验证日期。 这是用于创建结构的代
当我在本地机器上运行 WCF 服务时,它工作正常。当我将相同的文件部署到我们的测试服务器时,当我的测试客户端尝试连接到 WCF 服务时出现此错误: Security Support Provider
我正在尝试调用托管在 IIS 上并应用了 Windows 身份验证安全性的 Web 服务。 我正在将 Delphi XE 与 INDY 10 和 TIdHttp 组件结合使用。 如果我传入有效的用户名
我在工作中遇到了一个问题,即我们使用 WCF 进行 SSO 的应用程序在与其他域通信时对域信任使用选择性身份验证失败。这是在服务器 2k8R2 机器上,它们的两个域都处于完整的 2k8R2 功能级别(
我的应用程序在两天前运行良好。我能够在实时应用程序上完全正常地发送推送通知,但突然我开始收到此错误 {System.Security.Authentication.AuthenticationExce
我有以下代码: public GetUserDataResponse GetUserDataFromService(X509Certificate2 certificate) { Channe
我想在Windows域环境(使用Kerberos)中使用Microsoft的安全支持提供程序接口(SSPI)在两个实体之间(在C ++中)发送加密和签名的消息。 根据MSDN中的文档,有两个函数Mak
try { _apnsStream.AuthenticateAsClient("gateway.sandbox.push.apple.com", certificates, System.Se
我的项目出现了一些 fatal error ,错误来自 sspi.h,我必须定义一些东西,但我不知道是什么以及为什么,请有人解释。 sspi.h(60): fatal error C1189: #er
背景 Windows SSPI API是 Windows 安全服务的一个接口(interface),允许您相互验证客户端和服务器。 API 的主要用途之一是提供 Windows 集成身份验证,也称为单
我正在开发一个客户端-服务器应用程序,我希望客户端使用用户的登录凭据向服务器进行身份验证,但我不希望用户必须输入他们的用户名和密码。我当然不想负责安全处理密码。我只需要用户向我证明他们就是他们所说的那
我正在尝试访问 wcf 客户端。我知道人们现在正在从中获取信息,所以我知道它有效。我的问题是我似乎无法克服它。该服务是相互认证的服务。我在本地计算机上的个人商店中有适当的证书。即使这样,我也会遇到以下
在我们的 Windows C++ 应用程序中,我使用 InitializeSecurityContext() 客户端打开与运行 stunnel SSL 代理的服务器的 schannel 连接。我的代码
注:我设法取得了一些进展,请参阅我当前问题的编辑,谢谢。 我想在 Windows 上使用 libcurl 通过 Kerberos/GSSAPI 身份验证访问网站。我首先尝试使用 MIT Kerbero
我正在努力获取从计算机 A 到运行 SQL Server 的计算机 B 的 SQL Server 连接。 我在谷歌上进行了广泛的搜索,但我发现的所有东西都不起作用。他们也不会引导您一步步解决这个问题。
我有一个奇怪的问题:我在基于 .net2 的 c# 中编写了一个服务器和客户端,它们正在通过 .net 2 SslStream 聊天。 Cl和S之间有1个发送命令的连接,cl和s之间有1个发送文件的连
我有一个 Linux 服务器应用程序,它使用 Kerberos 进行客户端身份验证和需要在 Windows 上运行的客户端。 Kerberos 票证由 Windows Active Directory
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我是一名优秀的程序员,十分优秀!