1

j2meでhttpsConnectionを取得しようとしています(以下の構成の一部<必要に応じて、さらに提供できます)

<j2me.midlet.configuration>CLDC-1.1</j2me.midlet.configuration>
<j2me.midlet.profile>MIDP-2.0</j2me.midlet.profile>

WTKは2.5.2_01です

HttpsConnection connection = (HttpsConnection)Connector.open("https://myURL/user/login", Connector.READ);`

connection.open()で私は得る

[WtkRun] javax.microedition.pki.CertificateException: Certificate in a chain was not issued by the next authority in the chain
   [WtkRun]     at com.sun.midp.ssl.X509Certificate.verifyChain(+115)
   [WtkRun]     at com.sun.midp.ssl.Handshake.parseChain(+111)
   [WtkRun]     at com.sun.midp.ssl.Handshake.rcvCert(+114)
   [WtkRun]     at com.sun.midp.ssl.Handshake.doHandShake(+96)
   [WtkRun]     at com.sun.midp.ssl.SSLStreamConnection.<init>(+173)
   [WtkRun]     at com.sun.midp.ssl.SSLStreamConnection.<init>(+12)
   [WtkRun]     at com.sun.midp.io.j2me.https.Protocol.connect(+214)
   [WtkRun]     at com.sun.midp.io.j2me.http.Protocol.streamConnect(+57)
   [WtkRun]     at com.sun.midp.io.j2me.http.Protocol.startRequest(+12)
   [WtkRun]     at com.sun.midp.io.j2me.http.Protocol.sendRequest(+38)
   [WtkRun]     at com.sun.midp.io.j2me.http.Protocol.sendRequest(+6)
   [WtkRun]     at com.sun.midp.io.j2me.http.Protocol.openInputStream(+9)
   [WtkRun]     at nkclause.PostClause.a(+162)
   [WtkRun]     at nkclause.PostClause.startApp(+473)
   [WtkRun]     at javax.microedition.midlet.MIDletProxy.startApp(+7)
   [WtkRun]     at com.sun.midp.midlet.Scheduler.schedule(+270)
   [WtkRun]     at com.sun.midp.main.Main.runLocalClass(+28)
   [WtkRun]     at com.sun.midp.main.Main.main(+80)

証明書の詳細を取得できたので、発行者は

[WtkRun] C=US;O=Thawte, Inc.;CN=Thawte SSL CA

同じ発行者がブラウザストレージに存在します。問題なくURLにアクセスしています。

私もいくつかのハックをしようとしました

connection = (StreamConnection) Connector.open("https://myURL/user/login:443;CertificateErrorHandling=warn;HandshakeCommentary=on", Connector.READ);

ただし、例外は同じです。

私はこのケースを処理するためのアプローチを模索しています:1)チェーンの2番目の権限がWTKエミュレーターに知られていない可能性があります。ブラウザでは、証明書の発行者を視覚的に確認できますが、wtkでintを実行するにはどうすればよいですか?2)SSL証明書の問題を無視する方法はありますか?古い答えは「いいえ」と言っていますが、それ以来何かが変わったのではないでしょうか。

4

1 に答える 1

1

wtkエミュレーターを具体的に調べてからしばらく経ちましたが、エミュレーションに必要な場合は、Javaキーチェーンに証明書を追加するだけで受け入れられると思います。WTKは利用可能なJ2SEVMを必要としないため、J2SEキーツールについて話していることはないでしょう。

私の最初のステップは、$ {WTK_LOCATION} / bin/mekeytoolをチェックアウトすることです。受話器が異なれば、カスタム証明書を受け入れるためにさまざまなことを行うことになります。そのため、ソリューションは受話器固有のものになる可能性があります。

J2MEでは、プログラムで証明書を無視しても何も変わっていないと確信しています。それをしたいのなら、httpsではなくhttpだけを使ってみませんか?

于 2012-12-13T21:53:25.550 に答える