是否可以通过未加密的 https 发送消息?例如,要求进行证书验证和授权,但不加密通过套接字发送的实际数据?
4 回答
是的,TLS 和 SSL 支持“无加密”模式。所讨论的特定客户端和服务器是否配置为启用是一个单独的问题。
虽然不太可能,但服务器可以默认启用这些密码套件之一。更有可能的是,服务器默认启用弱密码套件(如“导出”级基于 DES 的套件)。这就是为什么你应该仔细查看服务器的密码套件白名单,只留下一些受信任的、广泛支持的算法。
您可以使用 TLS_RSA_WITH_NULL_SHA 密码套件等来保护流量的真实性和完整性,而无需加密。
本例中的“RSA”指的是密钥交换算法,而“SHA”指的是用于保护流量不被更改的消息认证算法。“NULL”是加密算法,或者,在这种情况下,缺少加密。
重要的是要意识到流量虽然没有加密,但会捆绑在 SSL 记录中。客户端和服务器必须启用 SSL。
如果您正在寻找通过 SSL 交换某些数据的降压解决方案,那么 SSL 会关闭,但应用程序流量会继续,这也是可能的,但请记住,它绝对不为明文流量提供安全性;它可以被攻击者篡改。因此,例如,使用 SSL 进行身份验证,然后降级为“in-the-clear”协议以接收使用通过 SSL 协商的身份验证的命令是不安全的。
SSL/TLS 规范定义了一个“NULL 密码”,您可以使用它。大多数客户端和服务器软件出于显而易见的原因禁用它。
但是,如果您正在编写自己的软件,您也许可以说服您的图书馆协商它。
我想你可以。
但这将是愚蠢的,您将失去身份验证的重点,并使自己暴露在可以拦截和更改您的数据包的攻击者面前。
不,协议不允许这样做。
您可以做的一种解决方案是通过 https 连接,验证连接,然后使用会话 cookie 断开与 HTTP 的后续连接。如果没有该 cookie,请重定向回 https,以便客户端始终通过它进行连接。
不过,这可能与您无关,因此,如果您提供有关您要解决的问题的更多信息,我们可能会提供更多帮助。