集群后,受管appserver1,appserver2,appserver13,无法启动,报错如下:
<BEA-090504> <Certificate chain received from localhost -
127.0.0.1 failed hostname verification check. Certificate contained
LENOVO-D01793DE but check expected localhost>
问题的原因:主机名验证不通过。在安装bea weblogic时,当时的主机名为
LENOVO-D01793DE,后进行了变更。而weblogic的服务器证书没有更新,还是老的主机名,所以始终不匹配。注:即使写
ip/localhost也没用,发送url时是附带主机名的。
方案1:更改notemanger.hosts文件,加入主机名和ip,结果还是不起作用。
方案2:在server的StartWeblogic.sh java参数加入-Dweblogic.security.SSL.ignoreHostnameVerification=true
在startNodeManager.sh
java参数加入
-Dweblogic.security.SSL.hostnameVerifier=examples.security.sslclient.NulledHostnameVerifier
结果还是不起作用
方案3:在keystore ssl的配置中,高级配置有一项客户端特性-->主机名验证 选为 ‘无’,结果测试通过,成功
下面是此项配置的说明,估计在java 参数里加入 -Dweblogic.security.SSL.HostnameVerifier=none 应该也可以
如果不愿意加,就在console里一个一个改吧
weblogic.security.SSL.HostnameVerifier
在 SSL 握手期间,主机名验证可确定 URL 中的主机名是否与服务器标识中的主机名相匹配;需要进行此验证以防止中间人攻击。
WebLogic Server 提供了基于证书的 HostnameVerifier 实现,默认情况下使用该实现,它用于验证 URL 主机名是否与服务器证书的 CN 字段值相匹配。
您可以使用管理控制台“SSL”选项卡之下的“高级选项”窗格,用自定义主机名验证器替换此默认的主机名验证器;这将影响在使用 WebLogic SSL API 的服务器上运行的 SSL 客户端的默认值。另外,通过诸如
HttpsURLConnection
和
SSLContext
的 WebLogic SSL API,可以显式设置自定义 HostnameVerifier。