2010-02-04 65 views
4

我在Windows Mobile 6设备上使用IBM Websphere Everyplace Micro Environment JVM。我的应用程序使用HTTPS连接,并且我已经正确设置了一切,以便为SSL/TLS使用J9JSSE程序包。正在HTTPS连接上传输的一些消息是通过就好饶人,但其他客户端上引起异常:IBM WEME J9无效的填充异常

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服务器,以confgure的密码套件是玩弄正在使用的唯一一个,将工作是:

SSL_RSA_WITH_NULL_SHA

,但这实际上并没有做任何加密(由空在这里指定的),所以它是没有用的,我的。所使用的缺省密码套件是:

SSL_RSA_WITH_3DES_EDE_CBC_SHA

这与我已经试过有这个问题的填充所有其他一起。有谁知道什么可能导致这个问题,我怎么解决它?

我发现了一个论坛帖子,有人提出J9 CBC实现中存在一个错误,但在网上任何地方没有其他信息似乎很奇怪。任何有关这个问题的帮助将不胜感激。

回答

0

所以我来的最终答案是切换到不同的JVM。 IBM提供的很少的支持,只是试图让某人向我们出售我们的JVM许可证,这证明是非常困难的。我猜他们只想处理庞大的组织。

现在使用Skelmir的CEE-J,到目前为止,它的应用前景非常广阔。

0

您使用哪个JDK提供程序来运行Apache Tomcat服务器?如果你不使用IBM JDK,那么你可能想尝试使用它。这将确保客户端和服务器上的密码套件提供程序相同(IBM)。

http://www.ibm.com/developerworks/java/jdk/

更新: 你可以使用同一个JVM提供商为Tomcat服务器,为Windows Mobile 6?您使用哪个JDK提供程序来运行Apache Tomcat服务器?

+0

不幸的是,在另一个JVM上运行我们的Tomcat服务器不是一个选项。 – DaveJohnston 2010-02-09 14:36:30

+0

tomcat服务器正在使用标准Sun JVM运行,该JVM不支持IBM J9 JVM。过去我们尝试了另一个JVM,并且我们能够使用标准的Sun JSSE和JCE文件,但是这个JVM不允许我们这样做。 – DaveJohnston 2010-02-12 16:09:40

1

以下密码套件由J9 JSSE实现支持: J9 JSSE and Provider Details

  • SSL_RSA_WITH_3DES_EDE_CBC_SHA
  • SSL_RSA_WITH_DES_CBC_SHA
  • SSL_RSA_WITH_NULL_SHA
  • SSL_RSA_WITH_NULL_MD5
  • SSL_RSA_WITH_RC4_128_SHA
  • SSL_RSA_WITH_RC4_128_MD5
  • TLS_RSA_WITH_AES_128_CBC_SHA

。在Tomcat

SSL or TLS cipher suites names from the relevant specification and their OpenSSL equivalents

SSL 3.0加密套件

用户开放第三方SSL。从RFC3268

 
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 

AES密码套件,延伸TLS 1.0

 
TLS_RSA_WITH_AES_128_CBC_SHA -----> AES128-SHA 

如果可能,请参阅是否可以在IBM Websphere Everyplace Micro Environment JVM上使用Open SSL。如果没有,那么尝试在Tomcat上使用J9 JSSE。

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