Scala 具有主机名不匹配的播放的SSL握手
我们正在使用Play2.5+Scala,需要使用SSL通过https连接到远程客户端 问题是我们从客户端获得的证书有类似于Scala 具有主机名不匹配的播放的SSL握手,scala,ssl,playframework,sslhandshakeexception,Scala,Ssl,Playframework,Sslhandshakeexception,我们正在使用Play2.5+Scala,需要使用SSL通过https连接到远程客户端 问题是我们从客户端获得的证书有类似于api.*.net的CN 但我们试图点击的实际URL包含一个IP地址: https://123.234.34.56/service/resource/operation... 由于证书中的公共名称与URL中的主机名(ipAddress)不匹配,我们看到了以下错误 SSLHandshakeException:没有主题替代名称出现 所以我尝试在Scala中实现如下所示的Hostn
api.*.net的CN
但我们试图点击的实际URL包含一个IP地址:
https://123.234.34.56/service/resource/operation...
由于证书中的公共名称与URL中的主机名(ipAddress)不匹配,我们看到了以下错误
SSLHandshakeException:没有主题替代名称出现
所以我尝试在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()...
我也在考虑尝试这里提到的解决方案:
但我不确定是否需要按照上面的链接实现ChannelFactory,如图所示http://netty.io/3.10/xref/org/jboss/netty/example/securechat/SecureChatClientPipelineFactory.html
此外,我在SO的其他帖子中也看到:
如果证书中的主机名未解析为地址,则服务器配置错误。不过,您应该能够更改本地DNS解析,将该名称指向/etc/hosts文件中的该IP地址(如果在Linux或其Windows等效版本下)
我不知道如何用Java/Scala编程实现这一点
任何帮助都将不胜感激
谢谢
Suresh“主机”修复程序如下所示:
在hosts
文件()中添加一行,如下所示
现在使用主机名“api.a.b.c.net”而不是其IP地址连接到服务器
由于主机
覆盖,您的计算机将不会对此名称执行DNS查找,而是使用该IP地址。但是,SSL客户端将满足主机名与证书匹配的要求,错误应消失
对于HostnameVerifier修复程序,您需要按照链接到的答案中的说明进行操作。Netty SSL客户端不使用您当前使用的静态全局配置。主机修复程序如下所示:
在hosts
文件()中添加一行,如下所示
现在使用主机名“api.a.b.c.net”而不是其IP地址连接到服务器
由于主机
覆盖,您的计算机将不会对此名称执行DNS查找,而是使用该IP地址。但是,SSL客户端将满足主机名与证书匹配的要求,错误应消失
对于HostnameVerifier修复程序,您需要按照链接到的答案中的说明进行操作。Netty SSL客户端不使用您当前使用的静态全局配置。@Bruno请查看我上面的查询?Thanks@Bruno你能看看我上面的问题吗?ThanksHI@Rich,谢谢你的回复,我无法访问hosts
文件。是否有一种方法可以用Java/Scala编程更新hosts文件?我还实现了一个类似的代码,如图所示http://docs.jboss.org/netty/3.2/xref/org/jboss/netty/example/securechat/SecureChatClientPipelineFactory.html
但是netty在durin没有收到这个代码g runtime/startuo感谢Java/Scala中没有办法更新主机,这是一个O/S配置任务。HI@Rich,感谢您的响应,我无法访问主机文件。有没有办法用Java/Scala编程更新主机文件?我还实现了类似的代码,如图所示http://docs.jboss.org/netty/3.2/xref/org/jboss/netty/example/securechat/SecureChatClientPipelineFactory.html
但netty没有在运行时获取此代码/startuo感谢没有办法从Java/Scala内部更新主机,这是一项O/S配置任务。
123.234.34.56 api.a.b.c.net