我在 Windows Mobile 6 设备上使用 IBM Websphere Everyplace Micro Environment 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_RSA_WITH_NULL_SHA

但这实际上并没有进行任何加密(此处由 null 指定),因此对我来说没有用。使用的默认密码套件是:

SSL_RSA_WITH_3DES_EDE_CBC_SHA

这与我尝试过的所有其他人都有这个填充问题。有谁知道可能导致问题的原因以及我如何解决它?

我找到了一个论坛帖子,其中有人建议 J9 CBC 实现中存在错误,但似乎很奇怪在线上没有任何其他信息。对此问题的任何帮助将不胜感激。

最佳答案

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

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

    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

    来自 RFC3268 的 AES 密码套件,扩展了 TLS v1.0

    TLS_RSA_WITH_AES_128_CBC_SHA -----> AES128-SHA

    .

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

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

    关于java - IBM WEME J9 无效填充异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2199596/

    10-09 07:27