集群后,受管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。