【问题标题】:How to know if my server is using SSL or not (with Twisted)如何知道我的服务器是否使用 SSL(使用 Twisted)
【发布时间】:2011-08-03 10:35:18
【问题描述】:

我写了一个简单的客户端和一个服务器。 它们都可以配置为使用或不使用 SSL。您可以在客户端和服务器中进行设置。 我的问题是,如果我尝试在没有 SSL 的情况下连接到使用 SSL 的服务器设置,则连接已建立但卡住了。 (当然……这是正常的)。 我的客户如何知道他正在尝试在没有 SSL 的情况下连接到使用 SSL 的服务器?反之亦然?

最好的解决方案是我的客户端自动检测服务器是否使用 SSL 并进行正确的连接(TCP 或 SSL)。

比任何答案都提前=)

【问题讨论】:

  • 出于好奇,为什么您从未接受过您的问题的答案?在撰写本文时,您已经提出了 8 个问题,但从未对任何内容进行投票或标记答案。您是否阅读过有关在本网站提问的常见问题解答?
  • 简单,你必须注册,我不想。你想问我为什么我没有脸书或推特或...?谢谢 =)
  • 我不知道您所说的“注册”是什么意思...您已经有了用户名。您只需点击答案旁边的“检查”即可接受。
  • 啊啊啊我才发现check和vote不是一回事!当我想投票时,它要求我注册,而不是当我检查时。

标签: python ssl tcp twisted


【解决方案1】:

为 SSL 连接使用不同的端口号。这就是 HTTP / HTTPS 的使用方式。

或者

在您的协议中定义一个命令以将连接转换为 SSL,例如STARTTLS,基于能力协商。这是在 SMTP 中实现相同目的的一种方式。

【讨论】:

  • 使用不同的端口不是一个好主意,因为端口可以在服务器的配置中更改。我在考虑 STARTTLS,但这并不是我真正想要的。它将解决客户端使用 ssl 而服务器不使用时连接卡住的问题(反之亦然),但它会强制客户端按照服务器的需要进行连接(无论是否使用 ssl)。我会考虑的。谢谢。
【解决方案2】:

最好的解决方案是我的客户端自动检测服务器是否使用 SSL 或不做正确的连接(TCP 或 SSL)。

不可能。 SSL 连接中的第一个事件是来自客户端的消息,而不是来自服务器的消息。

【讨论】:

  • Not possible 可能夸大了这种情况。例如,如果您定义使用DNS-based service discovery 的协议,客户端可以确定该协议的安全实现是否可用。
  • 我必须看看这个。谢谢。
猜你喜欢
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 2016-08-27
  • 1970-01-01
  • 2013-01-05
相关资源
最近更新 更多