上下文:配置了主机名标头和 TLS 证书的 IIS 网站。
当客户端启动到指定站点的连接时,这是正确的流程吗?
- 客户端(浏览器)执行 DNS 查找
- 与服务器建立 TCP 连接
- 客户端(浏览器)构造 TLS 有效负载,其中包含 SNI(站点名称)并开始与服务器握手
- 服务器在其证书的站点绑定列表中查找具有指定名称的证书并做出响应
- 建立 TLS 后,IIS 网络服务器使用 HOST 标头值将 HTTP 请求路由到特定站点。
据我了解,SNI 是服务器查找站点证书的基本信息。
如果在 TLS 握手之后我实际上修改了 HTTP Host 标头以针对不同的网站会发生什么?这可能吗 ?
RFC 6066 第 11.1 节部分说:
Web 服务器实际执行此操作的方式可能会有所不同。Apache 和 nginx 都直接拒绝这样的连接,尽管奇怪的是 Apache 可以选择关闭它。不知道 IIS 做了什么,但希望它是理智的。您可以轻松地自己测试它。