Http 端口80上的升级:TLS和升级:h2c/websocket是否仍然安全?

Http 端口80上的升级:TLS和升级:h2c/websocket是否仍然安全?,http,ssl,websocket,http2,Http,Ssl,Websocket,Http2,鉴于以下情况: 连接端口80 请求升级:TLS/1.x 请求升级:h2c或升级:websocket 产生的连接/协议仍将使用TLS还是将被不安全的TLS取代 注意:我主要不是寻找流行的客户端/服务器的当前状态,而是寻找规范中可能导致更理想的实现的任何提示。我不确定您的请求是否有意义,即使有意义,是否有任何实现会支持它,或者您是否可以依赖可能的支持 Connect on port 80 Request Upgrade: TLS/1.x 好的,这有点好。它基本上要求通过端口80和http讲TL

鉴于以下情况:

  • 连接端口
    80
  • 请求升级:TLS/1.x
  • 请求
    升级:h2c
    升级:websocket
产生的连接/协议仍将使用TLS还是将被不安全的TLS取代


注意:我主要不是寻找流行的客户端/服务器的当前状态,而是寻找规范中可能导致更理想的实现的任何提示。

我不确定您的请求是否有意义,即使有意义,是否有任何实现会支持它,或者您是否可以依赖可能的支持

Connect on port 80
Request Upgrade: TLS/1.x
好的,这有点好。它基本上要求通过端口80和http讲TLS,由定义。这是非常不寻常的,因为标准的TLS只能通过https方案和端口443(或像8443这样的非标准端口)使用,但理论上这是可行的。另请注意,
连接
标题也必须设置为
升级

Connect on port 80
Request Upgrade: TLS/1.x
Request Upgrade: h2c
这就是它开始变得棘手的地方。h2c协议是一个不安全的HTTP/2连接(即没有TLS),但是,结合您的第一个报头,您要求通过TLS进行连接(HTTP btw允许多个报头)。我想,从理论上讲,这可能会起作用,类似于它在上面的HTTP/1.1下的工作方式,只是其中明确指出:

“h2c”协议标识符描述了不使用TLS的协议

支持通过TLS的HTTP/2的实现必须在TLS[TLS-ALPN]中使用协议协商

因此,我会考虑上面的连接违反规范,不确认升级。

Connect on port 80
Request Upgrade: TLS/1.x
Request Upgrade: websocket
关于这一点,目前的情况还不太清楚。它确实指出:

默认情况下,WebSocket协议使用端口80进行常规WebSocket连接,使用端口443通过传输层安全性(TLS)隧道进行WebSocket连接[RFC2818]

而且:

|wss | URI标识WebSocket服务器和资源名称,并指示通过该连接的流量将通过TLS进行保护(包括TLS的标准好处,如数据机密性、完整性和端点身份验证)

但是,我看不到任何东西禁止通过| ws | URI进行TLS连接,甚至禁止通过端口80使用| wss | URI。但是,我可以想象,由于没有明确定义,因此无法保证这是否可行,或者连接是否安全