1

Windows Mobile PDA で実行するモバイル アプリケーションを開発しています。アプリケーションは Java で書かれており、それを実行するために IBM の J9 JVM を使用しています。アプリケーションは HTTP 経由で Apache Tomcat サーバーと通信し、SSL を使用するようにセットアップしようとしています。

クライアントとサーバーの両方の公開/秘密鍵を生成し、自己署名証明書をエクスポートして、それぞれのキーストアにインポートしました。最初は、サーバー側の認証のみを使用して機能させようとしましたが、成功しました。しかし、apache conf ディレクトリの server.xml ファイルで clientAuth="true" を設定して、相互認証を取得しようとしています。

サーバーで SSL ロギングを有効にしましたが、クライアントが接続すると、サーバーが SSLProtocolException: handshake alert: no_certificate を報告します。クライアント ログにも例外が表示されます。

javax.net.ssl.SSLHandshakeException: unexpected_message
    at com.ibm.j9.jsse.SSLSocketImpl.completeHandshake(Unknown Source)
    at com.ibm.j9.jsse.SSLSocketImpl.startHandshake(Unknown Source)
    at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.openSocket(Unknown Source)
    at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.connect(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)

クライアントのキーストアとトラストストアは、次のシステム プロパティを設定することによって構成されます。

javax.net.ssl.trustStore
javax.net.ssl.trustStorePassword
javax.net.ssl.keyStore
javax.net.ssl.keyStorePassword

J9 JVM でクライアント認証を設定する方法を知っている人はいますか?

4

2 に答える 2

0

したがって、私がたどり着いた最終的な答えは、別の JVM に切り替えることでした。IBM から利用できるサポートはほとんどなく、誰かに JVM のライセンスを販売してもらうことは非常に困難であることがわかりました。彼らは大規模な組織とのみ取引するのが好きだと思います。

現在、Skelmir の CEE-J を使用していますが、これまでのところ、はるかに有望です。

于 2010-04-08T09:30:34.580 に答える
-1

基本的に、クライアントは証明書を送信していません。サーバーはクライアントを認証できません。証明書を受信しない場合や、同じ CA_ROOT ではない場合などで、応答を設定できない場合があります。「no_certificate」というメッセージから、クライアントが何も送信していないことが容易に想像できます。ファイル (パス) またはタグを確認してください。「trustStore」の代わりに truststoreFile を使用し、「trustStorePassword」の代わりに truststorePass を使用してください。

于 2010-02-08T15:53:14.917 に答える