Opensslで認証キーを生成します。これが私のコマンドです:
openssl genrsa -des3 -out enc_key.pem 1024
私はcerファイルにエクスポートし、次にJava keytoolを使用してJava keystore(jks)にインポートします。
キーストアはいいですね。 Javaアプリからキーストアをロードできます。
問題は、クライアントがサーバーに接続している場合(この場合は、WebサーバーではなくFTPサーバーであり、Apache minaを使用しています)、例外が発生しました:
javax.net.ssl.SSLHandshakeException:SSLハンドシェイクが失敗しました。 org.Apache.mina.coreでorg.Apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.Java:434)でorg.Apache.mina.coreで.filterchain.DefaultIoFilterChain.access $ 5(DefaultIoFilterChain.Java:429)
...
原因:javax.net.ssl.SSLHandshakeException:com.Sun.net.ssl.internal.ssl.SSLEngineImplのcom.Sun.net.ssl.internal.ssl.Handshaker.checkThrown(Unknown Source)に共通の暗号スイートがない.checkTaskThrown(Unknown Source)at com.Sun.net.ssl.internal.ssl.SSLEngineImpl.writeAppRecord(Unknown Source)at com.Sun.net.ssl.internal.ssl.SSLEngineImpl.wrap(Unknown Source)at javax.net .ssl.SSLEngine.wrap(不明なソース)
...
原因:javax.net.ssl.SSLHandshakeException:com.Sun.net.ssl.internal.ssl.SSLEngineImplのcom.Sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)に共通の暗号スイートがない.fatal(不明なソース)
聞きたいことがいくつかあります。
どんな助けでも感謝します!ありがとう
OpenSSLを使用してキーペアを生成するのはなぜですか?なぜkeytool
を使用しないのですか?
genrsa
ツールは、秘密鍵を生成するだけです。対応する証明書をどのように作成していますか?プライベートキーをJavaキーストアにどのようにインポートしますか? (keytool
が秘密キーをインポートできるのは既存のキーストアからであり、Java 6以降からのみであるためです。)
あなたの問題はあなたのキーストアにキーエントリが含まれていないことだと思います(秘密キーと対応する証明書)。 keytool
を使用してキーストアの内容を一覧表示すると、エントリはいくつありますか?それらはキーエントリですか、信頼できるエントリですか?
サーバーは、サーバー自体を認証するために秘密鍵にアクセスする必要があります。秘密鍵をインポートするには、Java 6拡張keytool
を使用します。
OpenSSLを使用してキーと証明書を作成したら、OpenSSLを使用してPKCS#12キーストアを作成します。
openssl pkcs12 -export -in cert.pem -inkey key.pem > server.p12
次に、このストアをJavaキーストアに変換します。
keytool -importkeystore -srckeystore server.p12 -destkeystore server.jks -srcstoretype pkcs12
次に、証明書が含まれているSSL対応サーバーでserver.jks
を使用しますand秘密鍵。