如何识别https?

问题描述 投票:-1回答:1

我没有看到关于http头中的安全连接的任何提及(它对于http / 1.1,http / 2和https基本相同)。服务器如何知道我们想要一个安全的连接?

据我所知,https只是普通的旧http,由TLS'工具'加密(在用户空间,即在浏览器中完成),然后才能进入TCP连接。

似乎唯一的认识是在TCP握手之后立即在安全连接中发送TLS客户端问候消息。如果将服务器设置为支持给定套接字上的安全连接,则在它看不到该消息时会出错。当连接不安全时,服务器会出错,因为它不知道如何处理客户端问候。

它是否正确?

http browser https server
1个回答
2
投票

对于给定的端口号,HTTPS可以打开或关闭。当服务器配置为侦听给定端口时,您将其配置为侦听HTTPS或HTTP(服务器与服务器之间的差异)。如果服务器配置为侦听HTTPS连接,那么当某些连接时,它会立即启动加密过程,如果另一方不期望加密,连接将失败。

当浏览器连接到服务器时,它根据用户键入的URL的架构决定是说HTTP还是HTTPS。如果他们键入https://那么它将与指定端口上的服务器建立加密连接(或443,如果未指明)。如果服务器不期望该端口上的加密连接,则连接失败。

如果用户键入http://,则浏览器会在指定端口上说出未加密的http(如果未指定,则为80)。同样,如果服务器期望加密流量,则连接失败。

只有双方的期望相符,才能成功。

理论上可以使用HTTP Upgrade header启动普通的未加密HTTP连接,然后启用加密,类似于其他协议中的STARTTLS。据我所知,这种功能很少被使用。几乎总是通过使用特定的加密流量端口号从一开始就启用加密。

© www.soinside.com 2019 - 2024. All rights reserved.