【问题标题】:J2ME Https connection not workingJ2ME Https 连接不工作
【发布时间】:2014-10-07 10:17:11
【问题描述】:

我是 J2ME midlet 的新手。我为诺基亚创建了 midlet 应用程序。应用程序适用于 http。但是在将 url 从 http 更改为 https 后,它不起作用。其他 https 网站(如 google)运行良好。但是我们的服务器链接不起作用。我得到了以下异常 java.io.IOException Native Error-5 。这是我的示例代码。

String url = "https://domain";
HttpsConnection hc = (HttpsConnection)Connector.open(url);
SecurityInfo si = hc.getSecurityInfo();
Certificate c = si.getServerCertificate();
String subject = c.getSubject();

【问题讨论】:

  • 您应该在证书管理区将您的服务器证书导入WTK。并确保在生成证书时在 CN 区域具有相同名称的 IP 地址。

标签: java https java-me midp


【解决方案1】:

我记得诺基亚手机会报告类似的错误(来自本机代码层的错误)。为他们找到意义并不容易。如果它是 Symbian 手机,您可以尝试从 Symbian SDK 文档(不是 Java,因为它没有在那里)检查 Symbian I/O 错误代码。据我记得,错误代码以负号报告给 J2ME。 对于您的情况,我认为这是因为您在服务器上使用了自签名 SSL 证书,并且设备无法根据设备上安装的根权限证书对其进行验证。这解释了为什么您可以访问其他 HTTPS 网站,例如 google,这些网站在服务器上使用了适当的证书。

解决办法可以是:

(1) 从 Twante 或 Verysign 购买 SSL 证书并将其安装在您的服务器上。有些设备可能无法识别 Twante(它们没有适当的根证书),有些是 Verysign(不太可能,但很少有设备有这样的问题)。 J2ME 设备的主要部分应该接受 Twante 证书,这些证书(前段时间我为 J2ME 开发时)比 Verysign 便宜

(2) 将您的根证书安装到设备(可能在某些设备上,但很少)。对于一般情况,这是一个糟糕的解决方案,因为您不能在每次用户安装应用程序时在每台设备上安装证书

(3) 根本不使用 SSL :)

(4) 使用HTTP但自己加密数据,甚至还有一些J2ME加密库,例如BouncyCastle的端口http://en.wikipedia.org/wiki/Bouncy_Castle_(cryptography)。但是在 java 代码中处理 SSL 会严重影响性能。可接受的数据量不大(文本等),但您可能希望通过不带 SSL 的常规 HTTP 传输图像

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-25
    • 2021-11-29
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多