我有一个用Java编写的组件,我无法更改,它部署在WAS 7上并尝试通过https调用Web服务。我得到了:
服务器选择了不支持或禁用的协议:SSLv3
当我尝试从SoapUI或java app(与WAS相同的java版本)调用相同的Web服务时,我得到了相同的错误,但很容易修复:
System.setProperty("https.protocols", "SSLv3");
出于某种原因,我无法强迫websphere工作。我通过控制台设置此属性,但错误仍然相同。当我打印系统属性时,我发现它已正确设置。
Java version:
java version "1.6.0" Java(TM) SE Runtime Environment (SR10 FP1)
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9)
这是服务器的日志文件。如何强制它使用SSLv3而不是TLSv1?我可以通过控制台更改吗?我被告知它可以在服务器上运行,但是我无法访问这些设置。除了设置之外可能是什么情况?不同版本的JVM,WAS?
[1/24/13 17:04:58:842 CET] 0000003e SystemOut O WebContainer : 4, **WRITE: TLSv1 Handshake**, length = 57
[1/24/13 17:04:58:967 CET] 0000003e SystemOut O WebContainer : 4, **READ: SSLv3 Handshake**, length = 74
[1/24/13 17:04:58:967 CET] 0000003e SystemOut O *** **ServerHello, SSLv3**
...
[1/24/13 17:04:58:967 CET] 0000003e SystemOut O WebContainer : 4, handling exception: javax.net.ssl.SSLHandshakeException: **Server chose unsupported or disabled protocol: SSLv3**
[1/24/13 17:04:58:967 CET] 0000003e SystemOut O WebContainer : 4, SEND TLSv1 ALERT: fatal, description = handshake_failure
[1/24/13 17:04:58:967 CET] 0000003e SystemOut O WebContainer : 4, WRITE: TLSv1 Alert, length = 2
[1/24/13 17:04:58:967 CET] 0000003e SystemOut O WebContainer : 4, called closeSocket()
[1/24/13 17:04:58:967 CET] 0000003e SystemOut O WebContainer : 4, called close()
...
答案 0 :(得分:0)
不确定这是否有帮助,但......
还有1个......
答案是SSLContext ctx = SSLContext.getInstance(“SSLv3”);答案 1 :(得分:0)
您的WebShpere前面是否有IHS(IBM HTTP Server)?
如果不是:
要从域管理器控制台更改协议,请执行以下操作:安全> SSL证书和密钥管理> SSL配置> NodeDefaultSSLSettings>保护质量(QoP)设置
在那里你会找到一个组合协议,你可以在其中设置它。如果已经设置了默认的SSL_TLS,您可以尝试更改为SSLv3,但SSL_TLS应该能够处理TLS和SSLv3,并且在此服务的路径上可能还有除WebSphere之外的其他内容。
您可以在http://www.redbooks.ibm.com/redbooks/pdfs/sg247660.pdf
找到详细信息还有:http://www.ibm.com/developerworks/websphere/techjournal/0612_birk/0612_birk.html#sec1
如果是:
比说明书不同,请告诉我。 :)
问候。
PS - 来自“客户端”的WebSphere服务器的这个日志我有一种气味,可能发生的是“客户端”是不支持SSLv3的那个,看起来WebSphere希望SSLv3关闭握手但客户端站点不支持它。如果是这种情况,您可以尝试将协议更改为SSLv2,但请注意,这样做会带来安全风险。