2010-02-04 56 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。

這裏指的是讓服務器和客戶端使用相同的密碼套件。