【问题标题】:Send close-notify to client on a TLS Session using SslStream使用 SslStream 在 TLS 会话上向客户端发送关闭通知
【发布时间】:2012-06-29 10:03:59
【问题描述】:

我正在尝试使用基于 SSL 的 TcpListener 创建一个自定义 FTP 服务器。

当关闭连接时,客户端会产生一个错误,因为当套接字关闭时没有发送close-notify 警报。 .NET TLS 实现中不考虑我读过的内容。

将此行为添加到我的服务器的最佳方法是什么。如何发送此警报?将字符串写入 SSL 流或包装流是否简单。

如果有人能指出正确的方向,我将不胜感激。

谢谢

【问题讨论】:

  • 我也有同样的问题。你找到任何解决方案了吗?谢谢!
  • @Morvader,还没有解决方案

标签: c# sockets .net-4.0 ssl


【解决方案1】:

我发现 SslStream 根本不支持这个,所以我现在看到的唯一选择是手动发送。这就是我所说的“手动日落”。

我发布了我的代码here(因为这是我能找到的最早提到的问题)。如果对您有帮助,请查看并提出建议。

我希望微软能抽出时间在框架的下一个版本中修复它。

【讨论】:

【解决方案2】:

close-notify 应该在您关闭套接字时由 SSL 层自动发送,如果您是最先关闭的一端。如果您是收到 EOS 的一端,因此您正在关闭响应,RFC 2246 允许不发送close-notify 作为响应。

您不能自己发送。

【讨论】:

  • 是否有支持 .NET 4 的这种行为的库?
  • @ArturoMartinez 我根本不会为 .NET 说话,但 所有 SSL 库都应该这样做。
  • @EJP 当然,并非在所有情况下。至少使用OpenSSL API,你必须在关闭套接字之前做一次SSL_shutdown,否则肯定不会发送关闭通知。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 2019-02-21
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
相关资源
最近更新 更多