【问题标题】:SSL handshake with Play having mismatch on hostnames与 Play 的 SSL 握手主机名不匹配
【发布时间】:2017-07-23 07:18:45
【问题描述】:

我们正在使用 Play 2.5 + Scala 并且需要使用 SSL 使用 https 连接到远程客户端。

问题是我们从客户端获得的证书的 CN 类似于 api.*.*.*.net

但我们尝试访问的实际 URL 包含一个 IP 地址: https://123.234.34.56/service/resource/operation...

由于证书中的公用名和 URL 中的主机名(ipAddress)不匹配,我们看到以下错误。

SSLHandshakeException: No subject alternative names present

所以我尝试在 Scala 中实现 HostnameVerifier,如下所示,但 Play 或 Netty 没有获取此代码

 HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier()
        {
            public boolean verify(String hostname, SSLSession session)
            {
               // custom logic here to match hostname and IpAddress
                return true;
            }
        });

我不知道为什么 Play/Netty 在运行时没有接收到它,但我们正在使用 Play WS 访问远程客户端:

import play.api.libs.ws.WS 
WS.url(url).get()...

我也在考虑尝试这里提到的解决方案: Netty SSL hostname verification support

但不确定我是否需要按照上面的链接实现 ChannelFactory,如下所示http://netty.io/3.10/xref/org/jboss/netty/example/securechat/SecureChatClientPipelineFactory.html

我还在 SO 帖子的其他地方看到:

如果证书中的主机名无法解析为地址,则服务器配置错误。不过,您应该能够更改您的本地 DNS 解析,以将该名称指向 /etc/hosts 文件中的该 IP 地址(如果在 Linux 或 Windows 等效项下)

我不知道如何在 Java/Scala 中以编程方式实现这一点

任何帮助将不胜感激!

谢谢

Suresh

【问题讨论】:

  • @Bruno 请你看看我上面的查询。 ?谢谢

标签: scala ssl playframework sslhandshakeexception


【解决方案1】:

“主机”修复如下所示:

  1. 在您的 hosts 文件 (instructions for Windows or Linux here) 中添加如下所示的行

    123.234.34.56 api.a.b.c.net
    
  2. 现在使用主机名“api.a.b.c.net”而不是其 IP 地址连接到服务器

  3. 由于hosts 覆盖,您的计算机不会对该名称进行 DNS 查找,但会使用该 IP 地址。但是,SSL 客户端会满足于主机名与证书匹配并且错误应该消失。

对于 HostnameVerifier 修复,您需要按照链接到的答案中的说明进行操作。 Netty SSL 客户端不使用您当前使用的静态全局配置。

【讨论】:

  • 嗨@Rich,感谢您的回复,我无权访问hosts 文件。有没有一种方法可以在 Java/Scala 中以编程方式更新主机文件?我也实现了一个类似的代码,如http://docs.jboss.org/netty/3.2/xref/org/jboss/netty/example/securechat/SecureChatClientPipelineFactory.html 所示,但 netty 在运行时/启动期间没有获取此代码谢谢
  • 无法从 Java/Scala 中更新 hosts,这是一个 O/S 配置任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 2016-04-05
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 2021-06-05
相关资源
最近更新 更多