【发布时间】:2014-06-14 08:26:10
【问题描述】:
我希望我在正确的地方提出这个问题,它关于对 SNI 的理解
根据https://devcentral.f5.com/articles/ssl-profiles-part-7-server-name-indication#.U5wEnfmSzOz "随着 SNI 的引入,客户端可以在握手过程中指示他尝试连接的服务器的名称,作为 "Client Hello" 消息的一部分"
我的问题是像浏览器这样的客户端或任何 HTTP 客户端(比如 java.net)如何在 CLIENT HELLO 中发送此服务器名称?客户端是自己做的还是你必须以编程方式将它添加到 https 请求(例如在 JAVA.net HttpsURLConnection 中如何)
读自http://www.ietf.org/rfc/rfc4366.txt “目前,唯一支持的服务器名称是 DNS 主机名” 所以主机名是 SNI 兼容客户端发送的 server_name 或客户端可以发送的任何其他名称..
我希望我很清楚,如果不清楚,请改进问题/措辞,如果不清楚,请告诉我 谢谢
【问题讨论】:
-
我担心这是家庭作业,这通常会使它偏离主题。
-
不是作业,只是想了解 SNI 并向客户解释它,我正在通过 HTTPS(android java.net httpsurlconnection)连接到 SNI 服务器,他说发送服务器名称以及 https 请求,根据我的发现主机名被 SSL 库用作服务器名称,只是想清除它
-
哦,是的,这是 TLS 协议的一个特性。不过,我不记得具体内容了。从技术上讲,DNS 查找和 TLS SNI 是两个独立的过程,即使任何理智的用户代理都会为两者使用相同的名称(即 TLS 交换不知道任何事情或关心名称解析过程)。
标签: sni