如何在jboss中禁用主机名验证

时间:2014-02-22 09:21:34

标签: java ssl jboss

我们在Jboss SOA 5.3.1中部署了一个应用程序。在服务器和客户端都创建了自签名证书,它是1路ssl。但是,使用主机名和端点创建的服务器和客户端证书都使用IP地址注册。我们正在使用

protocol-socket-factory=org.apache.commons.httpclient.contrib.ssl.StrictSSLProtocolSocketFactory

在httpClient.properties中配置。但是当达到终点时,会抛出异常说

  

org.jboss.soa.esb.actions.ActionProcessingException:处理HTTP I / O的问题:证书中的主机名不匹配:< 15.191.34.56> !=主机名。

请告诉我如何禁用严格SSL的主机名验证?

2 个答案:

答案 0 :(得分:1)

关闭主机名验证会使您的连接容易受到MITM攻击。这不是解决此问题的正确方法。

您遇到的问题来自于您使用的是IP地址,而不是主机名。 Java严格遵循RFC 2818(与某些浏览器不同):

  

在某些情况下,URI被指定为IP地址而不是主机名。在这种情况下,iPAddress subjectAltName必须存在于证书中,并且必须与URI中的IP完全匹配。

生成证书时,请确保将IP地址放在主题备用名称(IP地址类型)中,如here所述。 或者,使用主机名(尽管仍然建议将名称放在SAN中)。

答案 1 :(得分:0)

Web的整个SSL认证基于主机名。您不能简单地关闭"主机名验证"因为它是标准的一部分。

要克服此问题,您需要按颁发的证书中指定的名称调用主机。如果您有中央DNS服务器,最好在那里配置主机名。如果没有,您可以在需要通信的盒子上使用主机文件。

  • 在Windows上,它将位于:Drive:\ Windows \ System32 \ drivers \ etc \ hosts
  • 在Linux上,它位于/ etc / hosts

添加以下行: 15.191.34.56 hostName.with.cert.issued

在您的代码调用服务器名称中,您还需要确保JBoss正在侦听此名称。