Kubernetes 使用外部域名集成外部服务时,OpenShift中的主机名验证失败

Kubernetes 使用外部域名集成外部服务时,OpenShift中的主机名验证失败,kubernetes,openshift,okd,Kubernetes,Openshift,Okd,我想通过服务和外部域名调用在OpenShift外部运行的REST服务。这对于http://请求非常有效。文件中描述了该机制: 但是,外部服务使用https进行保护。在这种情况下,我得到了以下异常: 主机名“外部测试服务”与对等方提供的证书主题不匹配(CN=.xxx,O=xxx,L=xxx,ST=GR,C=CH);嵌套异常为javax.net.ssl.SSLPeerUnverifiedException:主机名“外部测试服务”与对等方提供的证书主题不匹配(CN=.xxx,O=xxx,L=xxx,S

我想通过服务和外部域名调用在OpenShift外部运行的REST服务。这对于http://请求非常有效。文件中描述了该机制:

但是,外部服务使用https进行保护。在这种情况下,我得到了以下异常: 主机名“外部测试服务”与对等方提供的证书主题不匹配(CN=.xxx,O=xxx,L=xxx,ST=GR,C=CH);嵌套异常为javax.net.ssl.SSLPeerUnverifiedException:主机名“外部测试服务”与对等方提供的证书主题不匹配(CN=.xxx,O=xxx,L=xxx,ST=GR,C=CH)

我很清楚这个例外,因为我们使用OpenShift中的服务名称。此名称与证书中的源主机名不对应。因此,目前我认为有三种可能解决这个问题:

  • 将OpenShift服务的名称添加到证书中
  • 在调用外部REST服务之前停用主机名验证
  • 配置OpenShift(不知道这是可能的)
  • 有人解决过这个或类似的问题吗

    目前我使用的是OpenShift v3.9。我们正在一个pod中运行一个简单的Spring引导应用程序,在OpenShift之外访问REST服务

    任何暗示都将不胜感激

    多谢各位

    马库斯

  • 丑陋,可能会让你付出额外的代价$$
  • 违背了TLS的目的
  • 在Kubernetes 1.10及更早版本上,您可以使用

    您还可以使用with

  • 您还可以使用和。此外,还记录了


  • 希望有帮助

    谢谢你的回复。但我们已经在使用ExternalName特性。这就是问题所在。来自外部服务的证书在我们的Spring Boot应用程序中作为密钥库提供。我们使用ExternalName类型配置了一个服务。这对我来说非常有效http://... 当我们在应用程序中使用https://作为外部服务的URL时,我们得到了关于主机名的异常。因此,从我的角度来看,在服务名称映射到真实主机名之前,Spring引导应用程序将抛出错误。您是否尝试过TLS的L7入口?我把它添加到了答案中。嗨,我们没有在Ingress中尝试。但是,入口将用于公开OpenShift集群中运行的服务。然而,我们想要使用一个在OpenShift之外运行的服务,它的服务层来自OpenShift。看起来很复杂。您可以在服务层上终止SSL,不管它是什么,并在其中使用自签名证书。