【问题标题】:Wrong certificate from EKS cluster nginx SSL terminator来自 EKS 集群 nginx SSL 终结器的错误证书
【发布时间】:2019-06-14 08:20:43
【问题描述】:

我有一个奇怪的问题 w.r.t 安全 websoket 连接到 Spring Boot 应用程序(运行 WSS 端点)。基本上我有一个 websoket 客户端,它是我的生产代码的一部分,它假设使用 let's encrypt 证书连接到 EKS 集群中可用的 wss 端点。但是由于某种原因,它没有连接并抛出一个异常,指出“不是有效的证书路径”。我确信我在双方都使用了正确的证书。

经过一些调查,我发现 EKS 在握手期间给了我一个 Kubernetes 假证书,而不是由于某种原因让我们加密证书。有趣的事实是,如果我在生产代码之外编写一个简单的 websoket 客户端,我可以使用 let's encrypt 证书连接到端点。

仅供参考,我在笔记本电脑上运行这两个代码,所以 JVM 环境,证书存储是相同的。以前有没有人遇到过这个问题,或者你能帮我解决我应该开始调查的领域吗?

通过wireshirk 捕获,我看到生产请求和示例应用程序请求的差异如下,生产应用程序中缺少server_name,不知道为什么。

【问题讨论】:

    标签: spring-boot ssl websocket spring-websocket amazon-eks


    【解决方案1】:

    这个问题基本上发生在 Java 8 中。在某些特定情况下会发生这种情况。基本上,如果 websocket 端点有一个具有多个主机名的 IP,则从客户端提供 host_name 扩展标头 (SNI),如果没有发生,那么您最终可能会遇到诸如获取错误证书之类的问题。

    见:http://javabreaks.blogspot.com/2015/12/java-ssl-handshake-with-server-name.html?_sm_au_=iVVZj77NHqPn150Q

    我已使用此link 来解决此问题。基本上我必须使用 websocket 客户端并从上面的链接提供套接字工厂包装器。

    【讨论】:

      猜你喜欢
      • 2017-11-21
      • 2021-11-07
      • 2016-11-18
      • 2016-10-25
      • 2014-12-18
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多