问题标签 [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.
.net - 读取后数据保留在 SslStream 中
我正在开发一个点对点软件,它使用 .net 的 SslStream 进行安全通信。
我使用 BeginRead() 和 EndRead() 从流中异步读取数据。(不要太介意奇怪的回调方法。它来自我现在必须使用的框架)
客户端将处理接收到的数据并重新开始读取。如果远程客户端还没有发送新数据,接收客户端将再次读取旧数据。所以数据被读取后仍保留在 SslStream 中。
有没有办法告诉客户他已经读取了这些数据?
sockets - 使用 sslStream 类包装在 ssl 流中
当我运行下面的代码时,发生错误
错误发生在这一行
错误是:无法将数据写入传输连接:已建立的连接被主机中的软件中止。
我该如何解决这个问题?谢谢
c# - 如何在加密的有效载荷前添加未加密的帧头(使用 Sslstream)
我正忙于使用 C# 和 .NET Framework 4.5实现 ICE-TCP (RFC 6544 https://www.rfc-editor.org/rfc/rfc6544 )。但是,我面临一个与协议分层相关的非常棘手的问题,如下所示。
ICE-TCP RFC 说:
„ICE 需要代理来解复用 STUN 和应用层流量,因为它们出现在同一个端口上。在 [RFC5245] 中描述了这种多路分离,并使用魔术 cookie 和消息的其他字段完成。
面向流的传输引入了另一个问题,因为它们需要一种方法来构建连接,以便可以提取应用程序和 STUN 数据包,以便将 STUN 数据包与应用层流量区分开来。
因此,使用 ICE 的 TCP 媒体流使用 RFC 4571 ( https://www.rfc-editor.org/rfc/rfc4571#section-2 ) 中提供的基本帧,即使应用层协议不是 RTP。” </p>
框架方法如下所示:
我还想在我的实现中使用 TLS,ICE-TCP RFC 说:
„当使用传输层安全性 (TLS) 或数据报传输层安全性 (DTLS) 时,它们也在 RFC 4571 成帧垫片上运行,而 STUN 在 (D)TLS 连接之外运行。生成的 ICE TCP 协议栈如图 1 所示,左侧有 (D)TLS,右侧没有。”</p>
最后,ICE TCP 堆栈如下所示:
所以我对图的左侧很感兴趣。该图暗示帧头在 TLS 加密之外,我必须将未加密的头写入流。
目前我的应用程序使用包裹在我从 TCPClient 获得的 NetworkStream 的 SslStream 类。我的第一个意图是将帧头写入 NetworkStream,然后将加密的应用程序数据写入 SslStream。经过一番研究,我发现了这一点:
“在 AuthenticateAsClient/Server 之后,您的连接将受到 SSL 保护。然后不要调用 Socket 或 NetworkStream 方法:这会破坏 SslStream。” 来源:C# Sockets 和 SslStreams
因此,一旦建立 SSL 连接,我就无法写入 NetworkStream。
我的问题是:有没有办法在 TCP (NetworkStream) 和 TLS (SslStream) 之间“放置”标头?
提前致谢。
最好的祝福
马库斯
c# - 使用 SslStream 读取方法在 C# 上挂起
我正在尝试使用 SslStream 从服务器读取响应。服务器是 Google IMAP,我根据 google 文档使用 IMAP 命令。
第一次,当我使用 AuthenticateAsClient 方法时,这是可行的,我可以毫无问题地读取服务器的响应:
但是,当我再次尝试使用相同的读取方法时,我收到此错误:无法从传输连接中读取数据:连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败因为连接的主机没有响应。
其余代码完美运行,但在第一次从流中读取后,代码将挂起。我确实有一个catch
用于处理异常的结构,这就是我得到确切错误的地方。
我的本质是,服务器获取我使用该SslStream.Write
方法发送的命令,但此后对 Read 方法的每次调用都被拒绝,上述异常除外。
如果我能得到任何帮助,我将不胜感激。
问候,谢伊·罗森菲尔德。
c# - C# SslStream 读取问题
伙计们,我正在使用 SslStream 作为服务器来测试我的应用程序,但我在从流中读取时遇到问题。我正在使用以下代码:
问题是第一个循环返回:
第二次运行返回:
结果应该是
有什么问题,有没有更好的方法从 SslStream 中读取?
c# - How to read from SSLStream when you don't know the length?
Guys i'm trying to use SSLStream to test my app and so far it goes well (the client/server auth successfully), but the problem i have is reading:
How to know whether or not i have reached the end?
Microsoft's example with "EOF" simply does not work and i have tried "\r\n\r" comparison, but sometimes with long responses, it cuts out and thus i can only get a portion of the information. How can i read from this stream without knowing how long is the stream itself?
I've also tried comparing the last position of the stream with a variable that keeps the last position of the last loop and this does not work too (when you try to Read, but you've reached the end you get IOException).
c# - 识别具有 TCP 连接的用户
使用 C# 和 TCP 时,让客户端使用用户名和密码识别自己,然后允许多个数据包从服务器发送到客户端和从客户端发送到服务器而不发送用户名和密码的最佳方法是什么?时间?每个用户的线程?每个数据包发送的令牌?
另外,如何确保只有客户端能够读取服务器发送的数据,反之亦然?只是使用SSLStream?
c# - Read from SslStream
I'm reading from an SslStream as follows:
It does read from the stream. However, because the actual length of the stream is unknown, the last read just freezes the app. A sample message looks like this:
The server returns the length of the content, however it's not the total length of the stream. Is there an efficient way to read this stream successfully?
c# - .NET 4.5 中 sslStream 的密码选择
我正在尝试使用 .Net 的 sslStream 类创建一个 TLS1.1/TLS1.2 服务器。默认情况下,该流接受的唯一密码套件似乎是:
我想启用这些的非 ECDHE 版本(即 TLS_RSA_WITH_AES_128_CBC_SHA256)。我搜索了一下,人们谈论通过修改默认 SChannel 设置来更改密码套件——通过“SSL 密码套件顺序”或使用 CNG 功能:http: //msdn.microsoft.com/en-us/library/ windows/桌面/bb870930(v=vs.85).aspx
但是,我尝试了这个,但我什么也做不了。使用上面链接的 C++ 代码列出启用的密码套件,BCryptEnumContextFunctions()
显示我想要的密码套件默认启用。我什至将 TLS_RSA_WITH_AES_128_CBC_SHA256 添加为最高优先级套件,并且 sslStream 仍然拒绝来自仅支持该密码的客户端的 TLS 连接(例外:“客户端和服务器无法通信,因为它们不具备通用算法”)知道什么是在这里进行吗?
(顺便说一句,如果我的客户支持其中一种 ECDHE 密码套件,那么一切正常)
其他人如何在 .Net 4.5 中实现 TLS?我应该看开源解决方案吗?SChannel 的包装器如何更直接地使用 CNG api?