Java IBM WEME J9无效填充异常
我正在Windows Mobile 6设备上使用IBM Websphere Everyplace微环境JVM。我的应用程序使用HTTPS连接,并且我已经对一切进行了适当的设置,以便将J9JSSE包用于SSL/TLS。在HTTPS连接上传输的某些消息可以正常通过,但其他消息会在客户端上导致异常:Java IBM WEME J9无效填充异常,java,security,ssl,https,websphere,Java,Security,Ssl,Https,Websphere,我正在Windows Mobile 6设备上使用IBM Websphere Everyplace微环境JVM。我的应用程序使用HTTPS连接,并且我已经对一切进行了适当的设置,以便将J9JSSE包用于SSL/TLS。在HTTPS连接上传输的某些消息可以正常通过,但其他消息会在客户端上导致异常: java.io.IOException: invalid padding at com.ibm.oti.crypto.Util.unpadTLS10(Unknown Source) at
java.io.IOException: invalid padding
at com.ibm.oti.crypto.Util.unpadTLS10(Unknown Source)
at com.ibm.oti.crypto.CL3BasedProvider.decryptImpl(Unknown Source)
at com.ibm.oti.crypto.CL3BasedProvider.cryptUpdate(Unknown Source)
at com.ibm.oti.crypto.Key.cryptFinish(Unknown Source)
at com.ibm.j9.ssl.CipherAlgorithm.decipher(Unknown Source)
at com.ibm.j9.jsse.SSLSocketImpl.readData(Unknown Source)
at com.ibm.j9.jsse.SSLSocketImpl$SSLInputStream.read(Unknown Source)
at com.ibm.j9.jsse.SSLSocketImpl$SSLInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fillbuf(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.readln(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.readServerResponse(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.sendRequest(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.doRequest(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.getInputStream(Unknown Source)
我尝试过使用Apache Tomcat服务器来配置正在使用的密码套件,唯一有效的是:
SSL\u RSA\u与\u NULL\u SHA
但这实际上并没有进行任何加密(此处由null指定),因此对我来说没有任何用处。使用的默认密码套件是:
SSL_RSA_与_3DES_EDE_CBC_SHA
这个和我尝试过的所有其他东西都有这个填充问题。有人知道是什么导致了这个问题,我可以如何解决它吗
我发现了一篇论坛帖子,其中有人暗示J9CBC实现中有一个bug,但奇怪的是,网上没有其他关于这个的信息。对此问题的任何帮助都将不胜感激。您使用哪个JDK提供商来运行ApacheTomcat服务器?如果您没有使用IBMJDK,那么您可能希望尝试使用它。这将确保客户端和服务器上的密码套件提供程序是相同的(IBM) 更新:
对于Windows Mobile 6,能否使用与Tomcat服务器相同的JVM提供程序?您使用哪个JDK提供程序来运行Apache Tomcat服务器?J9 JSSE实现支持以下密码套件:
- SSL_RSA_与_3DES_EDE_CBC_SHA
- SSL_RSA_与_DES_CBC_SHA
- SSL\u RSA\u与\u NULL\u SHA
- SSL\u RSA\u带\u NULL\u MD5
- SSL_RSA_与_RC4_128_SHA
- SSL_RSA_与_RC4_128_MD5
- TLS_RSA_与_AES_128_CBC_SHA
这里的要点是让服务器和客户机使用相同的密码套件。所以我得到的最终答案是切换到不同的JVM。IBM提供的支持非常少,仅仅试图让某人向我们出售他们JVM的许可证就非常困难。我猜他们只喜欢与大型组织打交道 SSL_RSA_WITH_3DES_EDE_CBC_SHA ----> DES-CBC3-SHA SSL_RSA_WITH_DES_CBC_SHA ---------> DES-CBC-SHA SSL_RSA_WITH_NULL_SHA ------------> NULL-SHA SSL_RSA_WITH_NULL_MD5 ------------> NULL-MD5 SSL_RSA_WITH_RC4_128_SHA ---------> RC4-SHA SSL_RSA_WITH_RC4_128_MD5 ---------> RC4-MD5
现在使用来自Skelmir的CEE-J,到目前为止,它更有希望。不幸的是,在另一个JVM上运行我们的Tomcat服务器不是一个选项。Tomcat服务器正在使用标准sun JVM运行,而标准sun JVM不适用于IBM J9 JVM。我们在过去尝试了另一个JVM,我们能够使用标准的Sun JSSE和JCE文件,但是这个JVM不允许我们这样做。