集群后,受管appserver1,appserver2,appserver13,無(wú)法啟動(dòng),報(bào)錯(cuò)如下:
<BEA-090504> <Certificate chain received from localhost -
127.0.0.1 failed hostname verification check. Certificate contained
LENOVO-D01793DE but check expected localhost>
問(wèn)題的原因:主機(jī)名驗(yàn)證不通過(guò)。在安裝bea weblogic時(shí),當(dāng)時(shí)的主機(jī)名為
LENOVO-D01793DE,后進(jìn)行了變更。而weblogic的服務(wù)器證書(shū)沒(méi)有更新,還是老的主機(jī)名,所以始終不匹配。注:即使寫(xiě)
ip/localhost也沒(méi)用,發(fā)送url時(shí)是附帶主機(jī)名的。
方案1:更改notemanger.hosts文件,加入主機(jī)名和ip,結(jié)果還是不起作用。
方案2:在server的StartWeblogic.sh java參數(shù)加入-Dweblogic.security.SSL.ignoreHostnameVerification=true
在startNodeManager.sh
java參數(shù)加入
-Dweblogic.security.SSL.hostnameVerifier=examples.security.sslclient.NulledHostnameVerifier
結(jié)果還是不起作用
方案3:在keystore ssl的配置中,高級(jí)配置有一項(xiàng)客戶端特性-->主機(jī)名驗(yàn)證 選為 ‘無(wú)’,結(jié)果測(cè)試通過(guò),成功
下面是此項(xiàng)配置的說(shuō)明,估計(jì)在java 參數(shù)里加入 -Dweblogic.security.SSL.HostnameVerifier=none 應(yīng)該也可以
如果不愿意加,就在console里一個(gè)一個(gè)改吧
weblogic.security.SSL.HostnameVerifier
在 SSL 握手期間,主機(jī)名驗(yàn)證可確定 URL 中的主機(jī)名是否與服務(wù)器標(biāo)識(shí)中的主機(jī)名相匹配;需要進(jìn)行此驗(yàn)證以防止中間人攻擊。
WebLogic Server 提供了基于證書(shū)的 HostnameVerifier 實(shí)現(xiàn),默認(rèn)情況下使用該實(shí)現(xiàn),它用于驗(yàn)證 URL 主機(jī)名是否與服務(wù)器證書(shū)的 CN 字段值相匹配。
您可以使用管理控制臺(tái)“SSL”選項(xiàng)卡之下的“高級(jí)選項(xiàng)”窗格,用自定義主機(jī)名驗(yàn)證器替換此默認(rèn)的主機(jī)名驗(yàn)證器;這將影響在使用 WebLogic SSL API 的服務(wù)器上運(yùn)行的 SSL 客戶端的默認(rèn)值。另外,通過(guò)諸如
HttpsURLConnection
和
SSLContext
的 WebLogic SSL API,可以顯式設(shè)置自定義 HostnameVerifier。