如何在k8s入口或OpenShift路由中使用SNI发送请求

如何在k8s入口或OpenShift路由中使用SNI发送请求,openshift,kubernetes-ingress,Openshift,Kubernetes Ingress,在OpenShift平台中,我为https服务创建了一个路由,如下所示。路由为https传递类型,主机名为“www.https.com” 我对上述问题有几个问题,在文档中,提到路由支持带SNI的https和带SNI的TLS: (1) 主机名“www.https.com”是SNI吗 (2) 我想知道客户端如何向SNI发送请求?上面提到的两种场景:带SNI的https和带SNI的TLS 谢谢。来自和: 3.1。服务器名称指示 [TLS]不提供客户端通知服务器的机制 它正在联系的服务器的名称。这可能是

在OpenShift平台中,我为https服务创建了一个路由,如下所示。路由为https传递类型,主机名为“www.https.com”

我对上述问题有几个问题,在文档中,提到路由支持带SNI的https和带SNI的TLS:

(1) 主机名“www.https.com”是SNI吗

(2) 我想知道客户端如何向SNI发送请求?上面提到的两种场景:带SNI的https和带SNI的TLS

谢谢。

来自和:

3.1。服务器名称指示

[TLS]不提供客户端通知服务器的机制 它正在联系的服务器的名称。这可能是理想的 客户提供此信息以方便安全 连接到同时托管多个“虚拟”服务器的服务器 单个底层网络地址

为了提供服务器名称,客户端可以包括 (扩展)客户端hello中“server_name”类型的扩展

其中,
client hello
消息是的一部分

“客户端你好”消息:客户端通过向服务器发送“你好”消息来启动握手。消息将包括客户端支持的TLS版本、支持的密码套件以及一个称为“客户端随机”的随机字节字符串

  • 主机名“www.https.com”是SNI吗
  • 任何dns名称都可以是有效的SNI。来自RFC:

    但是,目前支持的唯一服务器名称是DNS主机名 这并不意味着TLS对DNS和其他名称有任何依赖性 将来可能会添加类型(由更新此类型的RFC) 文件)。TLS可能会将提供的服务器名称视为不透明的数据,并且 将名称和类型传递给应用程序

  • 我想知道客户端如何向SNI发送请求?上面提到的两种场景:带SNI的https和带SNI的TLS
  • 来自RFC:

    为了提供服务器名称,客户端可以包括 (扩展)客户端hello中“server_name”类型的扩展。 此扩展的“扩展数据”字段应包含
    “服务器名称列表”,其中:

    带SNI的HTTPS和带SNI的TLS的不同之处在于HTTPS是OSI模型的L7,TSL是OSI模型的L4

    这意味着SNI不仅可以用于http流量,还可以用于原始tls流量的基于域的路由

    oc get route
    
    NAME           HOST/PORT      PATH      SERVICES      PORT      TERMINATION          WILDCARD
    abc-route     www.https.com             abc-service   8888      passthrough          None