2015-05-13 64 views
0

後我從升級到7.0.0.33在7.0.0.37 IHS服務器..獲取javax.net.ssl.SSLProtocolException:文件結束

在最新的IHS服務器的SSLv3是完全禁用..

我下面的代碼

HttpURLConnection urlConn = (HttpURLConnection)url.openConnection(); 
urlConn.setUseCaches(false); 
urlConn.setRequestMethod("POST"); 
urlConn.setDoOutput(true); 
DataOutputStream os = new DataOutputStream(urlConn.getOutputStream()); 
os.writeBytes(obj.toString()); 
os.flush(); 
os.close(); 

一塊,我發現

DataOutputStream os = new DataOutputStream(urlConn.getOutputStream()); 

下面的代碼是BRE亞慶,並展示了「協議不支持」 後,其拋出下面的錯誤

[5/13/15 14:00:47:730 GMT] 0000001c SystemErr  R javax.net.ssl.SSLProtocolException: end of file 
    at com.ibm.jsse.bv.a(Unknown Source) 
    at com.ibm.jsse.bv.startHandshake(Unknown Source) 
    at com.ibm.net.ssl.www2.protocol.https.b.o(b.java:136) 
    at com.ibm.net.ssl.www2.protocol.https.i.connect(i.java:28) 
    at com.ibm.net.ssl.www2.protocol.http.bc.getOutputStream(bc.java:44) 
    at com.ibm.net.ssl.www2.protocol.https.l.getOutputStream(l.java:23) 
    at com.corio.tsr.webservices.SRAutomationWebServiceClient.getJsonObject(SRAutomationWebServiceClient.java:166) 
    at com.corio.tsr.jms.receiver.SRAutomationMessageBean.onMessage(Unknown Source) 
    at com.ibm.ejs.container.MessageEndpointHandler.invokeMdbMethod(MessageEndpointHandler.java:1013) 
    at com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:746) 
    at $Proxy2.onMessage(Unknown Source) 
    at com.ibm.ws.sib.api.jmsra.impl.JmsJcaEndpointInvokerImpl.invokeEndpoint(JmsJcaEndpointInvokerImpl.java:201) 
    at com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispatch(SibRaDispatcher.java:627) 
    at com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessListener$SibRaWork.run(SibRaSingleProcessListener.java:463) 
    at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:394) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code)) 

任何一個可以建議我能做什麼或如何擺脫這種錯誤

回答

1

SSL握手的任何線索如果沒有,它將無法工作。 首先要用設置屬性的協議支持

urlConn.setRequestProperty("https.protocols", "TLSv1"); 

如果您收到「javax.net.ssl.SSLHandshakeException:遠程主機關閉連接」,然後按照下面的步驟。

如果您使用的是IE,這裏是你如何能做到這一點:
1)訪問URL以https協議(例如:服務WSDL位置信息(例如https://foo.com/bar?wsdl)。在瀏覽器
2)Internet Explorer的提示安全警報。選擇「查看證書」按鈕。
3)導航到選項卡「詳細信息」。選擇「複製到文件..」按鈕。
4)將顯示證書導出嚮導。選擇「下一步」按鈕。
5)選擇「DER編碼二進制X.509(.CER)將被默認選中,選擇」Next「
6)將文件放在最適合你的地方 S7)選擇」Next「。 。「完成證書導出嚮導」將顯示,選擇「完成」將是一個彈出說:「導出成功」

以下是導入證書籤名JRE密鑰庫的步驟:
1 )將證書文件移動到您的%JAVA_HOME%/ jre/lib/security文件夾中
2)在ant中,您可以使用命令ant -diagnostics通過使用java.home系統屬性找到java安裝文件夾
3)製作一個名爲「cacerts」(keystore)的文件,它位於%JAVA_HOME%/ jre/lib/security下。
4)打開命令提示符並將目錄(cd)更改爲%JAVA_HOME%/ jre/lib/security。
5)下面的命令執行命令

keytool -importcert -trustcacerts -keystore cacerts -storepass changeit -alias "<aliasname>" –file <cert file> 

7)式中「是」。 (提示爲不受信任的證書顯示) 8)運行以下命令驗證: 9)keytool -keystore cacerts -storepass changeit -list -alias「」

+0

嘗試這個...將更新一次實施..謝謝你的響應 – gmhk

+0

javax.net.ssl。SSLHandshakeException:遠程主機在握手過程中關閉了連接 - 獲取以下錯誤信息 – gmhk

+0

@gmhk我按照您的要求編輯了答案,只需按照它的步驟操作即可。 –