Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IBM WEME J9无效填充异常_Java_Security_Ssl_Https_Websphere - Fatal编程技术网

Java IBM WEME J9无效填充异常

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

我正在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 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

用户第三方在tomcat上打开SSL

SSL v3.0密码套件

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 SSL_RSA_与_3DES_EDE_CBC_SHA-->DES-CBC3-SHA SSL_RSA_与_DES_CBC_SHA------->DES-CBC-SHA SSL\u RSA\u与\u NULL\u SHA------>NULL-SHA SSL\u RSA\u与\u NULL\u MD5------>NULL-MD5 SSL_RSA_与_RC4_128_SHA------>RC4-SHA SSL_RSA_与_RC4_128_MD5------------->RC4-MD5 来自RFC3268的AES密码套件,扩展TLS v1.0

TLS_RSA_WITH_AES_128_CBC_SHA -----> AES128-SHA TLS\U RSA\U带AES\U 128\U CBC\U SHA----->AES 128-SHA

如果可能,请查看是否也可以在IBM Websphere Everyplace微环境JVM上使用OpenSSL。如果没有,那么尝试在Tomcat上使用J9JSSE


这里的要点是让服务器和客户机使用相同的密码套件。

所以我得到的最终答案是切换到不同的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不允许我们这样做。