我将IHS服务器从7.0.0.33升级到7.0.0.37 ..
在最新的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());
此处代码正在破坏并显示不支持"协议" 之后它抛出以下错误
[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))
任何人都可以建议我该怎么做或任何关于如何摆脱这个错误的线索
答案 0 :(得分:1)
需要SSL握手。没有它将无法正常工作。 首先尝试设置协议支持属性
urlConn.setRequestProperty("https.protocols", "TLSv1");
如果您收到“javax.net.ssl.SSLHandshakeException:远程主机已关闭连接”,请按照以下步骤操作。
如果您使用的是IE,请按以下步骤操作:
1)在浏览器上使用https协议访问URL(例如:服务WSDL位置(例如https://foo.com/bar?wsdl)
2)Internet Explorer将提示安全警报。选择“查看证书”按钮
3)导航到“详细信息”选项卡。选择“复制到文件...”按钮
4)将显示证书导出向导。选择“下一步”按钮
5)默认选择“DER编码二进制X.509(.CER)”选项。选择“下一步”
6)将文件放在最适合您的位置。
S7)选择“下一步”。将显示“完成证书导出向导”。选择“完成”。这将是一个弹出窗口“出口成功”。
以下是将证书签名导入JRE密钥库的步骤:
1)将证书文件移动到%JAVA_HOME%/ jre / lib / security文件夹
2)在ant中,您可以使用命令ant -diagnostics通过java.home系统属性查找java安装文件夹
3)制作名为“cacerts”(密钥库)的文件的备份副本,该文件位于%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“”