【问题标题】:hostname verification in weblogicweblogic中的主机名验证
【发布时间】:2014-12-01 12:35:38
【问题描述】:

尝试在 Weblogic Server 中运行我的 Web 服务客户端时出现以下错误,尝试了各种站点中建议的各种选项

从 aa.aa.abc.com 收到的证书链 - 123.158.127.108 主机名验证检查失败。证书包含 abc.com 但检查预期 aa.aa.abc.com

  1. 一个选项是通过使用以下选项来禁止主机名验证, 这不是首选。

    -Dweblogic.security.SSL.ignoreHostnameVerification=true

  2. 尝试通过 weblogic 控制台“weblogic.security.utils.SSLWLSWildcardHostnameVerifier”设置自定义主机名验证器,仍然报同样的错误

  3. 尝试通过编写虚拟主机名验证器通过代码注册我的自定义主机名验证器

     requestCtx.put("com.sun.xml.internal.ws.transport.https.client.hostname.verifier", new HostnameVerifier() {
    
                                    @Override
                                    public boolean verify(String hostname,
                                            SSLSession session) {
                                        return true;
                                    }
                                });     
    

    上面的代码没有帮助,因为 weblogic 似乎使用自己的 Http 处理程序而不是 SUN J2SE 实现,有些人甚至建议使用“-DUseSunHttpHandler=true”。

我想知道是否有更好的方式以编程/动态方式进行操作,以免对其他应用程序产生任何影响?

【问题讨论】:

  • 这表示服务器设置错误。在服务器端解决问题,不要试图通过解决损坏的服务器设置来削弱 TLS。
  • 另一个想法是为您的证书添加一个主题备用名称,以便多个主机名成功:stackoverflow.com/questions/8744607/… 我们这样做是为了接受 IP 地址、短主机名和完全限定的主机名.无需更改代码或 java 参数

标签: java ssl certificate weblogic hostname


【解决方案1】:

我记得也遇到了同样的错误。用下面的代码sn-p得到它试试这个。

     url = new URL(urlStr);

     HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();

            conn.setHostnameVerifier(new HostnameVerifier()  
            {        
                public boolean verify(String hostname, SSLSession session)  
                {  
                    return true;  
                }  
            });  

【讨论】:

  • 它实际上接受任何由受信任的 CA 签名的证书,从而使您对中间人攻击敞开大门。
  • 我们不直接处理 HttpsURLConnection ,我们使用 jaxws 发送 SOAP 消息。
猜你喜欢
  • 2015-02-25
  • 2015-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 2015-08-25
相关资源
最近更新 更多