问题标签 [sslstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# 使用 Socket.Connected 会破坏 SslStream 吗?
我想知道是否使用 Socket.Connected 来确定套接字是否仍然连接会破坏 SslStream。
c# - C# Relay on SslStream 进行加密
我可以在 SslStream 上中继以加密我所有发送和接收的数据,这样我就不必散列数据或添加任何其他加密算法?
c# - SSLStream:“对 SSPI 的调用失败”异常
我有一个奇怪的问题:我在基于 .net2 的 c# 中编写了一个服务器和客户端,它们通过 .net 2 SslStream 聊天。Cl 和 S 之间有 1 个连接用于发送命令,cl 和 s 之间有一个用于发送文件的连接。
本地一切都在我的Windows机器上运行良好。但是,如果我在我的 Linux 服务器上运行服务器(使用单声道),则在某些情况下共享文件不起作用。我有不同的文件类别,在 3 个中的 2 个中,它的工作,在第三个中,服务器挂起SSLStream.AuthenticateAsServer(....);
并且客户端抛出一个异常,并显示消息“对 SSPI 的调用失败,请参阅内部异常”。内部异常是 System.ComponentModel.Win32Exception,带有消息“收到的消息意外或格式错误。”
我认为我在 linux 上运行它的方式可能是错误的。实际上我使用 VS2012 进行本地开发,当我想把它放在服务器上时,我通过 VS 上传编译的 exe 并使用mono server.exe
它来启动它。但是我也尝试在 Windows 上使用 monodevelop 来编译它(从 monodevelop 编译的东西也可以在本地工作)并在 linux 服务器上使用它,但这以相同的结果结束。
任何帮助将不胜感激。
这是我的缩短代码:
客户:
服务器:
c# - 当作为 COM 对象访问时,SslStream 的响应不同
我正在处理一个大部分代码是 C++ 的项目。从长远来看,这家商店正在迁移到 C#,因此我们尽可能用 C# 编写新代码并通过 COM 向 C++ 公开。
我在一个 COM 对象中包装了一个 System.Net.Sockets.SslStream 和一些其他功能,用于发送和接收消息。从测试 C# 程序调用此类上的函数时,我能够毫无问题地发送和接收消息。通过 COM 公开的相同调用似乎也可以正常工作,只是在发送后我无法立即接收数据。
从 C# 测试数据发送和接收的速度非常快,我得到了我应该得到的响应。从 C++ 开始,我总是遇到超时错误。调用 Read 的函数中的数据在 C# 测试和 C++ 程序中是相同的。SslStream 中的大部分状态是相同的。就在 write 调用之后和 Read 之前,唯一的区别似乎是几个句柄和似乎是内存地址的东西,但我认为这些并不重要。与此同时,我注意到在一个名为“base”的项目中,然后在一个名为“InnerStream”的项目中,然后在“System.Net.Sockets.NetworkStream”中有一个名为“DataAvailable”的属性。这在 C# 测试中有效,而在 C++ 程序中失败。
我可以提供有关故障排除或代码片段的更多详细信息。我没有在这里包含代码,因为与问题相关的部分仍然是巨大的。我希望对于正在发生的事情有某种神奇的答案,但是几乎可以肯定该错误是深入且非常具体的。我将不胜感激任何提供有关进一步故障排除步骤的见解的东西。
通过 COM 调用 C# 会带来哪些我可能没有考虑到的复杂情况?
如果没有进入 SslStream 缓冲区,对方的消息去了哪里?
我应该在哪里寻找?
c# - SslStream 无法从传输连接读取数据
我正在尝试在安全流层中使用异步等待,但我遇到了这个问题
我如何处理关闭异常
这是我的代码
如果您发现其他可疑的编程错误,也请纠正我。
c# - 在 Ubuntu 上使用 Mono 连接到 APNS 服务
我正在尝试建立与 Apple 的 APNS 服务的连接。我在 Ubuntu 上运行 Mono。用于建立连接的代码可以在 Windows 环境中正常工作。该代码是 NT 服务(系统进程)的一部分,而不是网站或服务。
以下是有关环境的一些信息:Ubuntu 12.10。单声道 3.0.5。使用 Mono 的 Certmgr:
- 我在 Mono 机器证书存储 (MY) 中安装了 APNS 证书。
- 我在 Mono 机器证书存储(密钥对)中安装了 APNS 证书私钥。
- 我在 Mono 机器证书存储区 (TRUST) 中安装了 Entrust.net 证书颁发机构 (2048) 根证书。
- 我在 Mono 机器证书存储 (CA) 中安装了 Entrust 证书颁发机构 - 1LC 中间证书。
Telnet 能够到达 gateway.push.apple.com:2195。我正在调试 MonoDevelop 中的代码。MonoDevelop 以 Root (gksudo) 身份运行。
这是我收到的错误:
这是我用来建立连接的代码:
来自调试器的更多信息:
m_certColl 应该包含 1 个证书,即 APNS 证书。我在调试器中确认了公钥和私钥都被填充了。RemoteCertificateValidationCallback 返回 NO SslPolicyErrors。我可以确认该链包含 3 个证书。1 包含 Apple 的 gateway.push.apple.com 公钥,1 包含 Entrust 的中间证书,1 包含 Entrust 的根证书。
我已经两次和三次检查了所有内容,但我只是不知道从这里去哪里。任何帮助将不胜感激!
c# - 使用 .NET sslstream 理解服务器/代理/客户端证书
我正在使用 C# 创建一个 TCP 代理,使用 TcpListener 作为代理服务器,使用 TcpCLient 进行客户端和代理之间以及代理和目标服务器之间的通信。这真的很好用。
我还必须支持 SSL 和 TLS 加密通信。这几乎可以正常工作。我使用以下代码创建从代理到目标服务器的 SslStream:
我使用以下代码创建了一个从代理到客户端的 SslStream:
证书从 X509Store 加载:
如果我强制客户端手动信任证书,这也很有效。
我的问题是:
- 如何强制(所有)客户端信任证书?
- 我在代理上需要哪种证书对所有客户端都有效?
- 如果需要,我必须安装哪种客户端证书才能强制客户端信任代理?
- 如何使用 openssl 或 makecert 创建所需的代理类型?
我不想隧道 SSL 通信抛出代理,因为我需要读取和操作流。
[更新] 是的,我使用了 Google 和 StackOverflow 中的搜索,我尝试了一些不同的解决方案,但没有成功。我还尝试了以下线程中的解决方案:
如何在 C# 中识别我的服务器名称以供客户端进行服务器身份验证
[UPDATE2] 这是使用 openssl 创建 CA 和服务器证书的非常好的教程,但它对我不起作用: http ://webserver.codeplex.com/wikipage?title=HTTPS&referringTitle=Home
ssl-certificate - Makecert 证书安全吗?
我做了一个应用程序,它通过. net SSLStream
,为了开发,我曾经makecert.exe
创建一个自签名的 ssl 证书。现在我读过一些微软文章,makecert 应该只用于测试。
现在我的问题是:使用此证书的应用程序是否安全,或者我可以使用哪个程序制作安全且可比较的证书?
非常感谢任何
帮助
c# - SslStream.AuthenticateAsServer 异常 - 服务器模式 SSL 必须使用具有关联私钥的证书
我正在开发一个类似于 CCProxy 的代理服务器应用程序。它适用于 HTTP 但不适用于 HTTPS。当在 SslStream 对象上调用 AuthenticateAsServer() 方法时,它会抛出异常。我也不知道我是否提供了正确的证书,我不知道如何创建证书。我刚刚提供了我在网上下载的代码附带的证书。这是代码:
此外,如果我使用 ssStream.AuthenticateAsClient 方法而不是 sslStream.AuthenticateAsServer,则会收到 AuthenticationException 并显示消息“对 SSPI 的调用失败,请参阅内部异常”。并且 InnerException 将消息显示为“收到的消息意外或格式错误”
当我使用 sslstream.AuthenticateAsServer() 方法时,我需要为每个新的 HTTPS 主机创建证书并使用此方法传递它。如果我提供自签名证书,则请求成功。但问题是,对于多少个新的 HTTPS 请求,我将继续手动创建证书并将其分配给 AuthenticateAsServer()?
c# - 如何知道在 SslStream 异步套接字中发送的数据包的大小
由于EndWrite没有输出,如何知道在SslStream 异步套接字中发送的数据包的大小?