在OpenShift平台中,我为https服务创建了一个路由,如下所示。路由是https传递类型,主机名是"https";www.https.com";。
oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
abc-route www.https.com abc-service 8888 passthrough None
我对文件中的上述内容有几个问题https://docs.openshift.com/container-platform/3.11/architecture/networking/routes.html,它提到该路由支持带SNI的https和带SNI:的TLS
(1( 是主机名";www.https.com"SNI?
(2( 我想知道客户端如何通过SNI发送请求?上面提到了两种场景:https和TLS。
谢谢。
来自RFC 3546和RFC 6066:
3.1.服务器名称指示
[TLS]不提供客户端告知服务器的机制它正在联系的服务器的名称。可能需要客户端提供此信息以促进安全连接到在单个底层网络地址。
为了提供服务器名称,客户端可能包括"类型的扩展";服务器名称"在(扩展(客户端hello中。
其中client hello
消息是TLS握手的一部分。
"客户端你好"消息:客户端通过发送";你好";消息发送到服务器。该消息将包括客户端支持的TLS版本、支持的密码套件以及被称为"TLS"的随机字节串;客户端随机">
- 是主机名"www.https.com"SNI
任何dns名称都可以是有效的SNI。来自RFC:
然而,目前唯一支持的服务器名称是DNS主机名这并不意味着TLS对DNS和其他名称有任何依赖性将来可能会添加类型(通过更新此的RFC文件(。TLS可能会将提供的服务器名称视为不透明数据将名称和类型传递给应用程序
- 我想知道客户端如何通过SNI发送请求?上面提到了两种场景:https和TLS
来自RFC:
为了提供服务器名称,客户端可能包括"类型的扩展";服务器名称"在(扩展(客户端hello中。";extension_ data";该扩展的字段应包含
"服务器名称列表";其中:<lt;为了可读性而编辑>gt;
HTTPS与SNI和TLS的不同之处在于HTTPS是OSI模型的L7,TSL是L4。
这意味着SNI不仅可以用于http流量,还可以用于原始tls流量的基于域的路由。