如何识别https?

时间:2019-03-03 21:08:27

标签: http browser https server

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

据我所知,https只是通过TLS'工具'(在用户区(即在浏览器中)进行加密)加密的原始HTTP,然后才进入TCP连接。

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

这正确吗?

1 个答案:

答案 0 :(得分:2)

对于给定的端口号,HTTPS处于打开或关闭状态。将服务器配置为侦听给定端口时,可以将其配置为侦听HTTPS或HTTP(服务器之间的差异如何)。如果将服务器配置为侦听HTTPS连接,则当某件服务器连接时,它将立即开始加密过程,如果另一端也不希望加密,则连接将失败。

当浏览器连接到服务器时,它会根据用户键入的URL的模式来决定使用HTTP还是HTTPS。如果用户键入https://,则它将与服务器上的服务器建立加密连接。指定的端口(如果未指定,则为443)。如果服务器在该端口上不期望加密连接,则连接失败。

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

只有当双方期望值匹配时,连接才会成功。

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