http - HTTPS 代理中的连接、主机和 SNI

标签 http ssl https sni

连接到代理服务器时,第一条消息是 CONNECT:

CONNECT server.example.com:80 HTTP/1.1
Host: server.example.com:80
如果我理解正确,第一行和第二行的 Host 字段可能不同。
第一行中的主机指示您实际连接到的服务器。在代理转发的情况下,可能会有所不同。
第二行中的主机表示我们请求的站点。
在这种情况下,是否需要 SNI?如果是这样,它们会有所不同吗?

最佳答案

If I understand correctly, the Host field, in the first row and the second row can be different.


Host header 对代理请求没有意义。它仅与最终服务器相关。 CONNECT 请求的 Host header 无论如何都不会发送到最终目的地 - CONNECT 请求中的任何内容都不会发送。

In that case, is the SNI required? And if so can they be different?


作为 CONNECT 请求的结果,在客户端和请求的最终服务器之间建立了一条隧道。最终服务器只会看到来自该隧道的任何内容。由于服务器需要 SNI 来选择证书,因此在通过代理发送 HTTPS 时也需要它 - 否则服务器将不知道要选择哪个证书。

关于http - HTTPS 代理中的连接、主机和 SNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70989860/

相关文章:

amazon-web-services - AWS CloudFront 自定义 SSL 证书已禁用

php - 在 cURL PHP 中为 https 启用 SSL 连接( header 空白)

java - spring boot - undertow https session 不会过期或停止 ssl 握手

rest - Rest api 中的事件流是什么以及为什么我们需要它?

http - 是否可以使用内容编码 : gzip in a HTTP POST request?

java - 在 servlet 中删除 cookie 时出现问题

ios - 2017 年我是否会被迫在 HTTPS 中更新我的 iOS 应用程序?

http - "multipart/form-data"POST 请求是否应该包含一个包含上传图像数据的字符串?

javascript - NodeJS https 服务器使用 express 返回 ERR_SSL_PROTOCOL_ERROR

apache - 使用 SSL 配置 Web 服务器是否会破坏常规 HTTP