gpt4 book ai didi

ssl - 在同一端口上支持 SSL 和非 SSL

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:20 27 4
gpt4 key购买 nike

我正在努力将 SSL 支持添加到我们现有的应用程序中,并已开始考虑向后兼容性。

与我读过的其他帖子不同的一个特殊情况是服务器可能不一定使用 SSL 代码更新。所以我将有一个 SSL 客户端连接到一个对 SSL 一无所知的服务器。

为了便于讨论,应用程序一次向服务器发送一个击键,并且为每次击键创建一个新套接字。因此,我需要想办法在现有端口号上进行这项工作,而不是使用超时来确定服务器是否支持 SSL。

关于优雅地处理这个问题的任何建议?

(我正在使用 Winsock 和 OpenSSL)

最佳答案

通常应用程序接受不同端口上的普通连接和直接 SSL 连接,例如smtp 端口 25 和 smtps 端口 465,http 端口 80 和 https 端口 443 等。其他方法是使用相同的端口,然后从客户端发出特定命令以升级到 SSL,例如例如 STARTTLS 与 smtp 或 AUTH TLS 与 ftp。

如果这些常用方法不适合您,并且客户端无论如何都会发送您协议(protocol)中的第一个数据包(例如使用 http,但不使用 smtp 或 ftp),您可以在初始接受后执行 recv(..MSG_PEEK)看看,客户端在没有从套接字缓冲区中删除数据的情况下发送了什么样的数据。如果查看的数据看起来像您的普通应用程序协议(protocol),您将在那里继续,如果它们看起来像来自 SSL 的客户端问候(请参阅 https://security.stackexchange.com/questions/34780/checking-client-hello-for-https-classification),您将进行 SSL 升级。

关于ssl - 在同一端口上支持 SSL 和非 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21126408/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com