2

以下を使用するサーバーアプリケーションがあります。

import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;

これはサーバー自体であるJavaアプリケーションです。仮想サーバーは使用しておらず、Webアプリケーションでもありません。クライアント アプリケーションからの接続を受け取り、その要求を処理することになっています。クライアント アプリケーションとデータベースの間の中間層。

起動すると実行されますが、スパムが発生し続けます (while (true) {} の原因) このエラー:

javax.net.ssl.SSLException: No available certificate or key corresponds to the SSL cipher suites which are enabled.
    at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.checkEnabledSuites(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept(Unknown Source)

そこで、いくつかの SSL 証明書作成ガイドを調べて、次のコマンドを使用して証明書を作成しました。

keytool -genkey -alias serverprivate -keystore servestore -keyalg rsa -keysize 2048
keytool -export -alias serverprivate -keystore servestore -rfc -file server.cer

それをローカルの証明書ストレージにインポートしたので、クライアント アプリケーションでテストできます。

keytool -import -alias trustservercert -file server.cer -keystore clienttruststore

これはすべて、私の $JAVA_HOME\bin ディレクトリで行われました。また、eclipse.iniファイルを次のように更新しました

-vm
$JAVA_HOME\bin\javaw.exe

そのため、Eclipse は jdk7 仮想マシンを使用してアプリケーションを実行します。

server.cer同時に、servestoreファイルを $ECLIPSE_HOME とアプリケーション ホーム ディレクトリの両方にコピーしようとしました。

結果は次のとおりです。同じエラー メッセージです。アプリケーションの実行は停止しませんが、残ります。

ここで助けていただければ幸いです。私は何を間違っていますか?SSL を使用してアプリケーションを作成するための、初心者向けのクールで詳細なガイドがあるかもしれませんが、私は見つけられませんでした。

4

1 に答える 1

5

これらのパラメーターを jvm スタートアップに追加する必要があります。

-Djavax.net.ssl.trustStore="<path to truststore>"
-Djavax.net.ssl.trustStorePassword=password

Java と SSL の詳細が必要な場合は、こちらをご覧ください

于 2012-10-08T07:35:49.270 に答える